<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java學習

    java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已經(jīng)搬家了,新的地址是 http://www.javaly.cn 如果有對文章有任何疑問或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂園)指出,我會盡力幫助解決。一起進步

     

    Tiles在JSF框架中的應用指南

     如果你還不知道Tiles是什么,這篇文章對你沒有意義。如果你不了解JSF,那你看這篇文章是在浪費時間。如果你正在為怎么在JSF里面用Tiles發(fā)愁,This is what u want!!!!!!

           可能有人會問:“為什么用tiles?為什么用JSF,不用Struts?”。如果你對tiles在struts中的應用了如指掌,那你不會問第一個問 題。同樣,如果你用過JSF,我相信你會在以后的項目中優(yōu)先考慮JSF而不是Struts。(其實我比較贊成Struts和JSF的互補,他們各有各的優(yōu) 勢,Struts強大的邏輯控制使它更適合于表示邏輯簡單而控制邏輯復雜的系統(tǒng),而JSF在view層次的表現(xiàn)力同樣是驚人的。建議去看看David Geary的帖子“Top Ten Reasons to Prefer JSF over Struts”)

          好了,廢話不說了。來看看Tiles是怎樣融合到JSF里面的。注意,JSF的配置我不多講,如果你JSF都不知道怎么運轉(zhuǎn),那就不要浪費時間了。

    1.把Struts1.1里面的struts.jar考到lib目錄下面。

    2.在web.xml里面加上下面配置:

       <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet>
      <servlet-name>TilesServet</servlet-name>
      <servlet-class>org.apache.struts.tiles.TilesServlet</servlet-class>
      <init-param>
       <param-name>definitions-config</param-name>
       <param-value>/WEB-INF/tiles-defs.xml</param-value>
      </init-param>
      <init-param>
       <param-name>definitions-parser-validate</param-name>
       <param-value>true</param-value>
      </init-param>
      <load-on-startup>2</load-on-startup>
     </servlet>

       藍色部分是你要加的。注意上面的servlet的load順序。

    3.添加tiles-defs.xml到/WEB-INF/下面,這個配置文件和以前在struts里面的沒有差別,一個典型的配置如下:

    <!DOCTYPE tiles-definitions PUBLIC
     "-//Apache Software Foundation//DTD Tiles Configuration//EN"
     "
    http://jakarta.apache.org/struts/dtds/tiles-config.dtd">

    <tiles-definitions>
     <definition  name="report.main" path="/JSPROOT/templates/topLayout.jsp">
              <put name="header" value="/JSPROOT/templates/header.jsp"></put>
              <put name="menu" value="/JSPROOT/templates/menu.jsp"></put>
              <put name="footer" value="/JSPROOT/templates/footer.jsp"></put>
              <put name="body" value="/JSPROOT/reports/report_main.jsp"></put>
            </definition>
            <definition name="report.summary" extends="report.main">
              <put name="body" value="/JSPROOT/reports/summary_report.jsp" type="page"></put>
            </definition>
    </tiles-definitions>

      上面定義了2個view,一個report.main,一個report.summary

    4.然后和原來一樣,編寫你自己的layout文件,及header,footer等....典型的一個layout如下:

    <%@taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles"%>
    <html>
    <head>
    <title>
    <tiles:getAsString name="header"/>
    </title>
    </head>
    <body bgcolor="#ffffff" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0" onKeyPress="return killEnt();">
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td colspan="2" align="justify">
          <tiles:insert attribute="header" flush="false" ignore="false">      </tiles:insert>
        </td>
      </tr>
      <tr>
        <td colspan="2" bgcolor="#000000" align="right">
         
        </td>
      </tr>
      <tr height="620">
        <td bgcolor="#030D97" align="Left" valign="Top" width="17%">
          <tiles:insert attribute="menu" flush="false" ignore="false">      </tiles:insert>
        </td>
        <td width="83%" style="vertical-align:top;">
          <table width="100%">
            <tr>
              <td style="vertical-align:top;padding-top:10px;padding-left:10px;">
                <tiles:insert attribute="body" flush="false" ignore="false">            </tiles:insert>
              </td>
            </tr>
          </table>
        </td>
      </tr>
      <tr>
        <td>
          <tiles:insert attribute="footer" flush="false" ignore="false">      </tiles:insert>
        </td>
      </tr>
    </table>
    </body>
    </html>

      注意:一定不能在f:view里面套f:view。也就是說你在layout.jsp不要用到JSF的標簽來產(chǎn)生一些業(yè)務邏輯。實際上我們主要的邏輯也是 在body里面實現(xiàn)的。在layout里面主要是定義一些文字,圖片什么的。同樣在header.jsp,footer.jsp,menu.jsp里面也 只寫html代碼,不要用JSF標簽。

    5.編寫兩個jsp文件like this:

    main_t.jsp:

    <%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>

    <tiles:insert definition="report.main">
    </tiles:insert>

    summary_t.jsp:

    <%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>

    <tiles:insert definition="report.summary">
    </tiles:insert>

    這 一步是關鍵,如果理解到了這里,那你就可以輕松把tiles和jsf結(jié)合起來。原來在Struts我們配置的forward對象可以直接是tiles- defs.xml里面的一個view,但是在JSF里面不行。這里的navigation必須是定義到一個jsp文件,所以我們只有在這個文件里面再來插 入tiles里面所定義的view。這樣的壞處就是我們在tiles-defs里面定義的每一個view都必須有一個對應的想上面一樣的jsp文件,而且 在JSF里面配的navigation都必須是基于這個文件到的。注意:不只是to-view-id,from-view-id也必須是對應上面的這種文 件,不能是body的jsp文件(不懂可以看第9步的配置)。

    6.如果你都理解了,你可以不往下看了。。下面是為了上面的例子更完整而做的剩余步驟。

    7.編寫一個index.jsp

    <html>
    <head>
    <title>
    index
    </title>
    </head>
    <body bgcolor="#ffffff">
    <jsp:forward page="main_t.faces">                    //對應到上面第5步的文件
      <jsp:param name="" value=""/>
    </jsp:forward>
    </body>
    </html>

    8.編寫2個tiles-defs.xml里面定義的body的jsp文件

    report_main.jsp:

    <%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
    <
    %@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
    <html>
    <head>
    <title>main</title>
    <link rel="stylesheet" type="text/css" href="sworx_IE.css"/>
    </head>
    <body bgcolor="#ffffff">
    <h1 align="center" class="header">Report</h1>
    <f:view>
      <h:form>
            <p>
          <h:commandButton action="summary" value="Summary Report" styleClass="button" style="width:120">      </h:commandButton>
          <h:commandButton type="reset" value="Clear" styleClass="button" style="width:60">      </h:commandButton>
        </p>
      </h:form>
    </f:view>
    </body>
    </html>

    summary_report.jsp:

    <%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
    <
    %@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
    <html>
    <head>
    <title>main</title>
    <link rel="stylesheet" type="text/css" href="sworx_IE.css"/>
    </head>
    <body bgcolor="#ffffff">
    <h1 align="center" class="header">Summary Report</h1>
    </body>
    </html>

    9.配置face-config.xml:

    ...........................

    <navigation-rule>
        <from-view-id>/JSPROOT/reports/main_t.jsp (注意:不是report_main.jsp,這樣在有的IDE里面可能會報report_main.jsp有錯,比如JB2005,不用管它)</from-view-id>
        <navigation-case>
          <from-outcome>summary</from-outcome>
          <to-view-id>/JSPROOT/reports/summary_t.jsp (不是summary_report.jsp)</to-view-id>
        </navigation-case>
    </navigation-rule>

    ....................


    好了。所有工作都作完了。哈哈,現(xiàn)在你同時擁有了tiles的布局靈活性和JSF在view層的強大表現(xiàn)力,還等什么,在下個項目中趕快試試吧。



    本文引用通告地址: http://blog.csdn.net/cqluojia/services/trackbacks/456534.aspx

    來源: http://blog.csdn.net/cqluojia/archive/2005/08/17/4

    posted on 2008-07-15 16:37 找個美女做老婆 閱讀(335) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     

    導航

    統(tǒng)計

    公告

    本blog已經(jīng)搬到新家了, 新家:www.javaly.cn
     http://www.javaly.cn

    常用鏈接

    留言簿(6)

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲色在线无码国产精品不卡| 成全视频高清免费观看电视剧| 亚洲av激情无码专区在线播放| 免费看美女被靠到爽| 在线毛片片免费观看| 无忧传媒视频免费观看入口| 亚洲人成7777| 78成人精品电影在线播放日韩精品电影一区亚洲| 免费观看国产小粉嫩喷水| 青青青免费国产在线视频小草| 中文字幕免费在线看线人动作大片 | 免费看www视频| 日本zzzzwww大片免费| 最好免费观看高清在线| 免费无码婬片aaa直播表情| 亚洲乱人伦中文字幕无码| 亚洲精品国产成人中文| 久久亚洲AV无码精品色午夜麻| 久久亚洲色一区二区三区| 免费一级毛片不卡在线播放| 热99re久久精品精品免费| 国产无人区码卡二卡三卡免费| 5555在线播放免费播放| 污视频在线观看免费| 久久精品国产这里是免费| 国产好大好硬好爽免费不卡| 国产性生大片免费观看性| 日韩在线一区二区三区免费视频| 久久人午夜亚洲精品无码区| 亚洲youwu永久无码精品| 亚洲最大的成人网站| 中文文字幕文字幕亚洲色| 亚洲an日韩专区在线| 亚洲精品国产精品国自产网站| 亚洲成人福利网站| 亚洲欧洲日本天天堂在线观看| 99久久亚洲综合精品成人网| 亚洲精品国产成人| 亚洲香蕉在线观看| 亚洲熟妇无码一区二区三区| 亚洲大码熟女在线观看|