隨筆 - 170  文章 - 536  trackbacks - 0
          <2006年2月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627281234
          567891011

          常用鏈接

          我參與的團隊

          隨筆分類(103)

          搜索

          •  

          積分與排名

          • 積分 - 413929
          • 排名 - 135

          最新評論

          閱讀排行榜

              Tiles是Struts中提供的一個優秀的模板技術,在JSF中,默認并沒有提供這樣的模板技術,但是,我們可以很容易的集成Struts中提供的Tiles到JSF中,現在,Tiles從Struts中獨立出來了,我們也可以在JSF中使用Shale中提供的Standalone Tiles。
              首先以集成Struts中的Tiles為例,簡單概述一下步驟,最后我們在這個步驟上做一些小小的修改就可以繼續整合Standalone Tiles了。

              使用Struts中的Tiles,我們必須使用 Struts 1.1 的 jar 包,后面的新版本都是不可以使用的,如果沒有的話可以上Struts的官方網站http://struts.apache.org下載一個。

              我們需要在web.xml中做一些配置,加入TilesServlet,通常我們把這段配置放在FacesServlet后面。

              <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/config/tiles-config.xml</param-value>
                  
          </init-param>
                  
          <load-on-startup>2</load-on-startup>
              
          </servlet>


              接下來,我們要在上面這段配置定義的文件“/WEB-INF/config/tiles-config.xml”中配置 Tiles,這里的配置格式是和Struts中的配置格式是完全一樣的,就不再重復了,大家可以參考官方的參考:http://struts.apache.org/struts-tiles/index.html,在我的MyPSP項目里也使用了Tiles,大家可以參考一下我的配置。

              在使用Tiles標簽的頁面中加入標簽聲明就可以使用了:<%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>,以MyPSP中一個簡單的頁面作為例子,是不是和在struts中使用Tiles沒有什么區別呢?

              <%@ page session="false" contentType="text/html;charset=utf-8"%>
              
          <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
              
          <%@ taglib uri="http://jakarta.apache.org/tiles" prefix="tiles" %>
              
          <html>
              
          <head>
                
          <title><tiles:getAsString name="title"/></title>
                
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
                
          <link href="../css/site.css" rel="stylesheet"/>
              
          </head>
              
          <body>
              
          <f:view locale="zh">
                  
          <tiles:insert attribute="page" flush="false"/>
              
          </f:view>
              
          <body>
              
          </html>


              注意:上面這個頁面使用了<f:view>,所以在子頁面中就不要再加入<f:view>了,否則會造成沖突無法正常使用。

              在struts中,我們是可以在struts-config.xml中直接使用Tiles的name來直接調用Tiles,但在JSF中使用Tiles就不能這樣,JSF配置文件中的navigation只能定義到所要的頁面,而不是某個Tiles,這樣的話我們就需要兩個不同的jsp文件來處理這樣的導航。

              借用我的MyPSP項目中的一段代碼作為示例:
              首先我定義了一個標準的文件頭模板single_layout.jsp,也就是上面給的例子,把這個作為模板定義在tiles-config.xml中。

              <definition name="mypsp.single" path="/tiles/single_layout.jsp">
                  
          <put name="title" value="${title}"/>
                  
          <put name="page" value="${page}"/>
              
          </definition>


              接著我們制作了一個具體的頁面文件/pages/activity.jsp。

              隨后我們要對一個具體的頁面activity.jsp使用Tiles進行拼裝,在tiles-config.xml中進行配置。

              <definition name="mypsp.activity" extends="mypsp.single">
                  
          <put name="title" type="string" value="Activity"/>
                  
          <put name="page" value="../pages/activity.jsp"/>
              
          </definition>


              最后需要一個jsp文件/web/activity.jsp,在其中我們通過<tiles:insert definition="mypsp.activity" flush="false"/>來引用這個definition。

              我們在訪問的時候訪問/web/activity.jsp這個頁面就可以了,還挺簡單的吧。

              我們再提一下如何使用Shale中的Standalone Tiles,我們只需要改兩個地方就可以了。
              1.web.xml中
                  將:<servlet-class>org.apache.struts.Tiles.TilesServlet</servlet-class>
                  改成:<servlet-class>org.apache.tiles.servlets.TilesServlet</servlet-class>
                這樣就可以了。

              2.標簽聲明
                  將:<%@ taglib uri="
          http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>
                  改成:<%@ taglib uri="
          http://jakarta.apache.org/tiles" prefix="tiles" %>
                這樣就可以了。

          posted on 2006-02-08 17:26 steady 閱讀(2988) 評論(3)  編輯  收藏 所屬分類: JSF & Myfaces

          FeedBack:
          # re: JSF中使用Struts Tiles和Standalone Tiles 2006-04-12 16:16 gllord
          我按照你說的去做,怎么漢字輸入還是顯示亂碼,能幫幫我嗎?  回復  更多評論
            
          # re: JSF中使用Struts Tiles和Standalone Tiles 2006-04-12 16:19 steady
          這個問題可以參考我的另外一篇關于國際化的文章。  回復  更多評論
            
          # re: JSF中使用Struts Tiles和Standalone Tiles[未登錄] 2007-08-29 19:11 JOE
          小弟在讀CORE jsf 2nd第八章卡住了,下的原代碼兒凡是跟tiles有關的在netbean 6.0 m10的環境下都運行不了(glassfishV2,最新的),說什么404錯誤,找不到資源還有服務,怎么辦呀,去官網的FAQ看,居然連FAQ都沒出來,怎么解決?謝謝。book-viewer-tile這個例子是最開始的,tiles-core-SNAPSHOT其提供的唯一的jar文件。源代碼就是從官網下的,真暈呀。  回復  更多評論
            
          主站蜘蛛池模板: 赞皇县| 镇巴县| 东乡族自治县| 涿鹿县| 吴堡县| 衢州市| 郑州市| 辰溪县| 肥城市| 社旗县| 婺源县| 榆社县| 和顺县| 哈巴河县| 封开县| 福清市| 定州市| 广元市| 和顺县| 沙洋县| 新绛县| 伊川县| 潼关县| 通辽市| 新乡县| 绥江县| 偏关县| 通州市| 清镇市| 云南省| 建平县| 东台市| 商河县| 龙里县| 贞丰县| 连州市| 东兴市| 桐城市| 安泽县| 班玛县| 恩施市|