XML:namespaceprefix=ons="urn:schemas-microsoft-com:Office:office"/>我發現在看到的這些關于Tiles的文檔中,Struts文檔中關于這方面的介紹對于初學者來說是最好的(個人認為),所以" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Struts中Tiles標簽簡介

系統 1763 0
Tiles簡介<!-- _fcksavedurl="http://dev.21tx.com/web/xml/" target="_blan-->XML:namespace prefix = o ns = "urn:schemas-microsoft-com: Office :office" />
我發現在看到的這些關于Tiles的文檔中, Struts 文檔中關于這方面的介紹對于初學者來說是最好的(個人認為),所以就把它譯了過來,對于想了解這方面東西又不想看E文的同胞,可以參考一下。<nobr oncontextmenu="return false;" onmousemove="kwM(5);" id="key5" onmouseover="kwE(event,5, this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">翻譯</nobr>的漏洞在所難免,希望大家對照原文看,出現的錯誤希望大家幫我指正,謝謝。

1.簡介
Tiles框架可以令我們組合可以復用的Tiles來搭建網頁。例如,下圖中的頁面就是通過組合一個header, 一個footer, 一個menu 和一個body搭建起來的。
ASPectratio="t" v:ext="edit">
每一個Tiles(header, menu, body, ...)都是一個 JSP 頁面,它們也可以通過組合其他的Tiles來搭建。
應用Tiles就好比是應用 Java 的<nobr oncontextmenu="return false;" onmousemove="kwM(0);" id="key0" onmouseover="kwE(event,0, this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">方法</nobr>:需要你定義Tiles(方法體),然后你才能夠在任何你需要的地方“調用”該方法體,并傳遞一些參數。在Tiles中,為了避免與request<nobr oncontextmenu="return false;" onmousemove="kwM(6);" id="key6" onmouseover="kwE(event,6, this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">參數</nobr>相混淆,參數(parameters)被稱為屬性(attributes)。
Tiles的方法體(也可以說是內容——譯者注)可以是一個簡單的JSP頁面, 或者是一個Struts的動作(action),或者任何一個指向現存的網頁資源的URI。
插入或者調用Tiles可以通過在JSP中的任何位置置入如下tag來完成:<tiles:insert ...>。插入也可以通過下面的方法來完成:指定一個作為Struts forward的路徑的自定義名;或者指定一個作為Struts action的input,forward或者include屬性的自定義名。
Tiles的方法體是用來創建版面布局,可復用部分等的,而Tiles的插入操作是用來插入Tiles的。同一個Tiles可以在同一個站點甚至同一個頁面被重用多次。
Tiles的插入可以與一個在Tiles中稱作“definition”的邏輯名聯系起來。一個Tiles的definition包含一個邏輯名,一個主體頁面和一些屬性值。definition的聲明并不插入與其相關聯的Tiles方法體,它只是讓Tiles與它的邏輯名關聯起來。可以在任何能夠插入Tiles地方運用定義的邏輯名,這樣與其對應的Tiles及其屬性就被插入進來了。
Tiles的definition的定義可以在JSP頁面中進行,也可以在一個或者多個中心控制文件中進行。Definition可以繼承于另外一個Tiles的definition,重載一些屬性,添加一些新的屬性等等。這就允許“父類”的definition定義一些通用的layout, header, menu, footer. 所有其他繼承于該父類的definition可以簡單地通過改變其definition來改變整個頁面。
2.簡單的例子
(1)插入到JSP頁面中:
    
      <tiles:insert 
      
        page
      
      ="/layouts/commonLayout.jsp" flush="true" />
    
  
    
    
  
這個例子將tag中指定的頁面插入到整個頁面中來。page屬性可以是指向任何現存<nobr oncontextmenu="return false;" onmousemove="kwM(4);" id="key4" onmouseover="kwE(event,4, this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">網絡</nobr>資源有效的URL。
(2)插入一個Tiles同時傳遞屬性值:
    
      <tiles:insert page="/layouts/classicLayout.jsp" flush="true">
    
  
    
      <tiles:put name="title"value="Page Title" />
    
  
    
      <tiles:put name="header" value="/common/header.jsp" />
    
  
    
      <tiles:put name="footer" value="/common/footer.jsp" />
    
  
    
       <tiles:put name="menu" value="/common/menu.jsp" />
    
  
    
      <tiles:put name="body" value="/tiles/mainBody.jsp" />
    
  
    
      </tiles:insert>
    
  
這個例子插入了指定的頁面,同時傳遞了它的屬性值。屬性值存儲在Tiles的context中,這個context也被傳遞到插入的tag中,然后可以用它們的名字進行訪問。
(3)作為String來得到一個屬性
<tiles:getAsString name="title" />
這個例子得到 ”tilte” 屬性的值,并在當前輸出流中把它作為字符串打印出來。toString() 方法應用于該屬性值,允許作為值來傳遞任何對象。
(4)通過引用屬性來插入Tiles
    
      <tiles:insert attribute='menu' />
    
  
該例子插入了被 “menu” 屬性值引用的Tiles。當前的Tiles的context首先獲得該屬性值,然后它再用來作為頁面目標而插入。
(5)典型的頁面布局
這個例子是典型的header-footer-menu-body 組合而成的頁面布局。
    
      <tr>
    
  
    
      <td colspan="2"><tiles:insert attribute="header" /></td>
    
  
    
      </tr>
    
  
    
      <tr>
    
  
    
      <td width="140" valign="top">
    
  
    
       <tiles:insert attribute='menu' />
    
  
    
      </td>
    
  
    
      <td valign="top"align="left">
    
  
    
       <tiles:insert attribute='body' />
    
  
    
      </td>
    
  
    
      </tr>
    
  
    
      <tr>
    
  
    
      <td colspan="2">
    
  
    
       <tiles:insert attribute="footer" />
    
  
    
      </td>
    
  
    
      </tr>
    
  
    
      </table>
    
  
    
      </body>
    
  
    
      </html>
    
  
該布局可以在一個JSP頁面中聲明(比如:/layouts/classicLayout.jsp)。它可以與在例子(2)中描述的tag一起結合運用。
3.Tiles的定義(Definitions)
Tiles的definition包含一個帶有Tiles URL的邏輯名和一些屬性值。定義并不插入Tiles。插入是在后來用definition的名字來完成的。一個definition的邏輯名可以在站點中使用多次,實現對Tiles的輕松復用。
Tiles的definition可以繼承自另外一個definition,并且能夠重載其屬性或者添加屬性。這使得通過一些屬性來構造不同的definition變得更加容易。比如,你可以定義一個“父類”的definition同時定義主要的 header, menu, footer, 和一個默認的 title。然后令你的每一個頁面的definitions繼承自這個“父類”的definition并重載title和body屬性。
Tiles的definitions的定義可以在JSP頁面中進行,也可以在一個或者多個中心控制文件中進行。為了使中心控制文件中定義的definitions有效,你需要初始化“定義池”(definitions factory),這個定義池能夠解釋文件中的definitions并把它們提供給Tiles框架。
4.使定義池生效
為了使在文件中定義的Tiles definitions生效,你需要寫下這些文件并初始化定義池。
初始化根據你是否應用Struts或者所用的Struts版本的不同而不同(這里只介紹了Struts1.1版本的配置)。
Struts1.1
應用Tiles的插件(plug-in)使Tiles definition生效。該插件創建定義池并把它傳遞給帶有參數的配置對象。參數可以在 Web .xml文件中配置,也可以作為插件的參數來配置。插件首先從web.xml中讀取參數,然后,重載那些在插件中也配置了的參數。所有的參數都是可選的,也可以忽略它們。插件應該在每一個struts-config.xml文件中聲明:
    
      <plug-in className="org.apache.struts.tiles.TilesPlugin" >
    
  
    
       <set-property property="definitions-config" 
    
  
    
       value="/WEB-INF/tiles-defs.xml,
    
  
    
       /WEB-INF/tiles-tests-defs.xml,/WEB-INF/tiles-tutorial-defs.xml,
    
  
    
       /WEB-INF/tiles-examples-defs.xml" />
    
  
    
       <set-property property="moduleAware" value="true" />
    
  
    
       <set-property property="definitions-parser-validate" value="true" />
    
  
    
      </plug-in>
    
  
l definitions-config:(可選)
指定配置文件的名稱。可以有多個文件名,之間用逗號隔開。
l definitions-parser-validate:(可選)
指定XML解釋器是否驗證Tiles的配置文件。
true::驗證。DTD應該在文件開頭指定(默認情況)
false:不驗證。
l moduleAware:(可選)
指定Tiles的定義池是否已模塊對應化。如果是true(默認),對應每一個Struts模塊都有一個定義池。如果是false,就會有一個為所有模塊共用的定義池。對應后者,仍然需要每一個模塊都對應定義一個plug-in插件。定義池將要以在第一個plug-in插件(一般是與默認的模塊相關聯的那個插件)中發現的參數值來初始化定義池。
true:Tiles框架是模塊對應。
false:Tiles框架在所有的模塊中只有一個共用的定義池(默認)。
l tilesUtilImplClassname:(可選——<nobr oncontextmenu="return false;" onmousemove="kwM(1);" id="key1" onmouseover="kwE(event,1, this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">高級</nobr>用戶使用)
指定所用的TilesUtil的實現的類名。指定的類應該是TilesUtilStrutsImpl類的子類。這一項使moduleAware選項失效。
指定 "TilesUtilStrutsImpl"相當于moduleAware = false。
指定 "TilesUtilStrutsModuleImpl" 相當于moduleAware = true.
當首次遇到這一項時,它被執行,并且只被執行一次。為了避免出現問題,建議在所有的TilesPlugin聲明中都用相同的值。
TilesPlugin類為每一個Struts模塊創建了一個定義池。
如果moduleAware處于false狀態,那么就為所有的模塊創建一個共用的定義池。對于后者來說,定義池就會以在第一個plugin中發現的參數來初始化。在每一個模塊中應該聲明對應的plugin,并且在整個應用<nobr oncontextmenu="return false;" onmousemove="kwM(2);" id="key2" onmouseover="kwE(event,2, this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">程序</nobr>當中,moduleAware都應該處于同一狀態。
Tiles中的路徑都是相對于main context來說的。
你不必指定具體的TilesRequestProcessor,plug-in會自動處理,然而,你想指定你自己的RequestProcessor,那么它應該繼承自TilesRequestProcessor。plug-in會檢查這項約束。
5.定義文件的語法
定義文件的語法可以在 tiles-config_1_1.dtd 文件中找到。
下面是一個簡單的例子:
  
    
      <!DOCTYPE tiles-definitions PUBLIC
    
  
    
       "-//Apache Software Foundation//DTD Tiles Configuration//EN"
    
  
    
       "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
    
  
    
    
  
    
      <!-- Definitions for Tiles documentation -->
    
  
    
      <tiles-definitions>
    
  
    
    
  
    
      <!-- ========================================================== -->
    
  
    
      <!-- Master definition -->
    
  
    
       <!-- ========================================================== -->
    
  
    
      <!-- Main page layout used as a root for other page definitions -->
    
  
    
    
  
    
      <definition name="site.mainLayout" path="/layouts/classicLayout.jsp">
    
  
    
       <put name="title"value="Tiles Blank Site" />
    
  
    
       <put name="header" value="/tiles/common/header.jsp" />
    
  
    
       <put name="menu" value="site.menu.bar" />
    
  
    
       <put name="footer" value="/tiles/common/footer.jsp" />
    
  
    
       <put name="body" value="/tiles/body.jsp" />
    
  
    
      </definition>
    
  
    
    
  
    
      <!-- ========================================================== -->
    
  
    
      <!-- Index page definition -->
    
  
    
      <!-- ========================================================== -->
    
  
    
       <!-- This definition inherits from the main definition.
    
  
    
       It overloads the page title and the body used.
    
  
    
       Use the same mechanism to define new pages sharing common 
    
  
    
       properties (here header, menu, footer, layout)
    
  
    
       -->
    
  
    
    
  
    
      <definition name="site.index.page" extends="site.mainLayout" >
    
  
    
       <put name="title"value="Tiles Blank Site Index" />
    
  
    
       <put name="body" value="/tiles/body.jsp" />
    
  
    
      </definition>
    
  
    
    
  
    
      </tiles-definition>
    
  
6.調試 (Debugging)
若想調試由Tiles組建的頁面,可以遵循下面的建議:
l 獨立的檢查每一個Tiles。直接<nobr oncontextmenu="return false;" onmousemove="kwM(7);" id="key7" onmouseover="kwE(event,7, this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">訪問</nobr>那些嵌套的Tiles來<nobr oncontextmenu="return false;" onmousemove="kwM(3);" id="key3" onmouseover="kwE(event,3, this);" style="COLOR: #6600ff; BORDER-BOTTOM: 0px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">測試</nobr>它們是否運行正常。
Tiles 日志生效,詳情請查閱 commons-logging 包的幫助文件。

Struts中Tiles標簽簡介


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲视频在线观看一区 | 色噜噜狠狠色综合久 | 日韩在线视频一区 | 精品久久久久久亚洲 | 999久久久| 亚洲欧美一区二区三区 | 91在线 | 欧美| 欧美乱妇在线观看 | 欧美日韩国产在线观看 | 日本一区二区三区四区在线观看 | 成人二区| 国产美女主播在线观看 | 国产一区亚洲一区 | 免费中文字幕视频 | 三级成人在线 | 日本不卡在线播放 | 欧美一级h | 成a人v在线观看视频 | 久久久精品免费热线观看 | 久久久精彩视频 | 排球少年第五季樱花动漫免费观看 | 欧美综合成人网 | 国产亚洲精品高清在线 | 日本在线观看 | 亚洲视频在线一区 | 久久精品国产2020 | 2022国产成人福利精品视频 | 一级做a爱过程免费视频麻豆 | 91麻豆国产极品在线观看洋子 | 免费A片线观看成人在-杏TV | 国产在线不卡 | 一级片在线 | 日韩精品成人a在线观看 | 特级做a爰片毛片免费看一区 | 波多野结衣在线高清视频 | av超碰 | 浮力影院在线观看 | 狠狠色丁香婷婷 | 亚洲国产一区在线 | 亚洲天堂在线播放 | 新91|