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

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Struts中Tiles標(biāo)簽簡(jiǎn)介

系統(tǒng) 1684 0
Tiles簡(jiǎn)介<!-- _fcksavedurl="http://dev.21tx.com/web/xml/" target="_blan-->XML:namespace prefix = o ns = "urn:schemas-microsoft-com: Office :office" />
我發(fā)現(xiàn)在看到的這些關(guān)于Tiles的文檔中, Struts 文檔中關(guān)于這方面的介紹對(duì)于初學(xué)者來說是最好的(個(gè)人認(rèn)為),所以就把它譯了過來,對(duì)于想了解這方面東西又不想看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>的漏洞在所難免,希望大家對(duì)照原文看,出現(xiàn)的錯(cuò)誤希望大家?guī)臀抑刚?,謝謝。

1.簡(jiǎn)介
Tiles框架可以令我們組合可以復(fù)用的Tiles來搭建網(wǎng)頁(yè)。例如,下圖中的頁(yè)面就是通過組合一個(gè)header, 一個(gè)footer, 一個(gè)menu 和一個(gè)body搭建起來的。
ASPectratio="t" v:ext="edit">
每一個(gè)Tiles(header, menu, body, ...)都是一個(gè) JSP 頁(yè)面,它們也可以通過組合其他的Tiles來搭建。
應(yīng)用Tiles就好比是應(yīng)用 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(方法體),然后你才能夠在任何你需要的地方“調(diào)用”該方法體,并傳遞一些參數(shù)。在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">參數(shù)</nobr>相混淆,參數(shù)(parameters)被稱為屬性(attributes)。
Tiles的方法體(也可以說是內(nèi)容——譯者注)可以是一個(gè)簡(jiǎn)單的JSP頁(yè)面, 或者是一個(gè)Struts的動(dòng)作(action),或者任何一個(gè)指向現(xiàn)存的網(wǎng)頁(yè)資源的URI。
插入或者調(diào)用Tiles可以通過在JSP中的任何位置置入如下tag來完成:<tiles:insert ...>。插入也可以通過下面的方法來完成:指定一個(gè)作為Struts forward的路徑的自定義名;或者指定一個(gè)作為Struts action的input,forward或者include屬性的自定義名。
Tiles的方法體是用來創(chuàng)建版面布局,可復(fù)用部分等的,而Tiles的插入操作是用來插入Tiles的。同一個(gè)Tiles可以在同一個(gè)站點(diǎn)甚至同一個(gè)頁(yè)面被重用多次。
Tiles的插入可以與一個(gè)在Tiles中稱作“definition”的邏輯名聯(lián)系起來。一個(gè)Tiles的definition包含一個(gè)邏輯名,一個(gè)主體頁(yè)面和一些屬性值。definition的聲明并不插入與其相關(guān)聯(lián)的Tiles方法體,它只是讓Tiles與它的邏輯名關(guān)聯(lián)起來??梢栽谌魏文軌虿迦隩iles地方運(yùn)用定義的邏輯名,這樣與其對(duì)應(yīng)的Tiles及其屬性就被插入進(jìn)來了。
Tiles的definition的定義可以在JSP頁(yè)面中進(jìn)行,也可以在一個(gè)或者多個(gè)中心控制文件中進(jìn)行。Definition可以繼承于另外一個(gè)Tiles的definition,重載一些屬性,添加一些新的屬性等等。這就允許“父類”的definition定義一些通用的layout, header, menu, footer. 所有其他繼承于該父類的definition可以簡(jiǎn)單地通過改變其definition來改變整個(gè)頁(yè)面。
2.簡(jiǎn)單的例子
(1)插入到JSP頁(yè)面中:
    
      <tiles:insert 
      
        page
      
      ="/layouts/commonLayout.jsp" flush="true" />
    
  
    
    
  
這個(gè)例子將tag中指定的頁(yè)面插入到整個(gè)頁(yè)面中來。page屬性可以是指向任何現(xiàn)存<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">網(wǎng)絡(luò)</nobr>資源有效的URL。
(2)插入一個(gè)Tiles同時(shí)傳遞屬性值:
    
      <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>
    
  
這個(gè)例子插入了指定的頁(yè)面,同時(shí)傳遞了它的屬性值。屬性值存儲(chǔ)在Tiles的context中,這個(gè)context也被傳遞到插入的tag中,然后可以用它們的名字進(jìn)行訪問。
(3)作為String來得到一個(gè)屬性
<tiles:getAsString name="title" />
這個(gè)例子得到 ”tilte” 屬性的值,并在當(dāng)前輸出流中把它作為字符串打印出來。toString() 方法應(yīng)用于該屬性值,允許作為值來傳遞任何對(duì)象。
(4)通過引用屬性來插入Tiles
    
      <tiles:insert attribute='menu' />
    
  
該例子插入了被 “menu” 屬性值引用的Tiles。當(dāng)前的Tiles的context首先獲得該屬性值,然后它再用來作為頁(yè)面目標(biāo)而插入。
(5)典型的頁(yè)面布局
這個(gè)例子是典型的header-footer-menu-body 組合而成的頁(yè)面布局。
    
      <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>
    
  
該布局可以在一個(gè)JSP頁(yè)面中聲明(比如:/layouts/classicLayout.jsp)。它可以與在例子(2)中描述的tag一起結(jié)合運(yùn)用。
3.Tiles的定義(Definitions)
Tiles的definition包含一個(gè)帶有Tiles URL的邏輯名和一些屬性值。定義并不插入Tiles。插入是在后來用definition的名字來完成的。一個(gè)definition的邏輯名可以在站點(diǎn)中使用多次,實(shí)現(xiàn)對(duì)Tiles的輕松復(fù)用。
Tiles的definition可以繼承自另外一個(gè)definition,并且能夠重載其屬性或者添加屬性。這使得通過一些屬性來構(gòu)造不同的definition變得更加容易。比如,你可以定義一個(gè)“父類”的definition同時(shí)定義主要的 header, menu, footer, 和一個(gè)默認(rèn)的 title。然后令你的每一個(gè)頁(yè)面的definitions繼承自這個(gè)“父類”的definition并重載title和body屬性。
Tiles的definitions的定義可以在JSP頁(yè)面中進(jìn)行,也可以在一個(gè)或者多個(gè)中心控制文件中進(jìn)行。為了使中心控制文件中定義的definitions有效,你需要初始化“定義池”(definitions factory),這個(gè)定義池能夠解釋文件中的definitions并把它們提供給Tiles框架。
4.使定義池生效
為了使在文件中定義的Tiles definitions生效,你需要寫下這些文件并初始化定義池。
初始化根據(jù)你是否應(yīng)用Struts或者所用的Struts版本的不同而不同(這里只介紹了Struts1.1版本的配置)。
Struts1.1
應(yīng)用Tiles的插件(plug-in)使Tiles definition生效。該插件創(chuàng)建定義池并把它傳遞給帶有參數(shù)的配置對(duì)象。參數(shù)可以在 Web .xml文件中配置,也可以作為插件的參數(shù)來配置。插件首先從web.xml中讀取參數(shù),然后,重載那些在插件中也配置了的參數(shù)。所有的參數(shù)都是可選的,也可以忽略它們。插件應(yīng)該在每一個(gè)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:(可選)
指定配置文件的名稱??梢杂卸鄠€(gè)文件名,之間用逗號(hào)隔開。
l definitions-parser-validate:(可選)
指定XML解釋器是否驗(yàn)證Tiles的配置文件。
true::驗(yàn)證。DTD應(yīng)該在文件開頭指定(默認(rèn)情況)
false:不驗(yàn)證。
l moduleAware:(可選)
指定Tiles的定義池是否已模塊對(duì)應(yīng)化。如果是true(默認(rèn)),對(duì)應(yīng)每一個(gè)Struts模塊都有一個(gè)定義池。如果是false,就會(huì)有一個(gè)為所有模塊共用的定義池。對(duì)應(yīng)后者,仍然需要每一個(gè)模塊都對(duì)應(yīng)定義一個(gè)plug-in插件。定義池將要以在第一個(gè)plug-in插件(一般是與默認(rèn)的模塊相關(guān)聯(lián)的那個(gè)插件)中發(fā)現(xiàn)的參數(shù)值來初始化定義池。
true:Tiles框架是模塊對(duì)應(yīng)。
false:Tiles框架在所有的模塊中只有一個(gè)共用的定義池(默認(rèn))。
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">高級(jí)</nobr>用戶使用)
指定所用的TilesUtil的實(shí)現(xiàn)的類名。指定的類應(yīng)該是TilesUtilStrutsImpl類的子類。這一項(xiàng)使moduleAware選項(xiàng)失效。
指定 "TilesUtilStrutsImpl"相當(dāng)于moduleAware = false。
指定 "TilesUtilStrutsModuleImpl" 相當(dāng)于moduleAware = true.
當(dāng)首次遇到這一項(xiàng)時(shí),它被執(zhí)行,并且只被執(zhí)行一次。為了避免出現(xiàn)問題,建議在所有的TilesPlugin聲明中都用相同的值。
TilesPlugin類為每一個(gè)Struts模塊創(chuàng)建了一個(gè)定義池。
如果moduleAware處于false狀態(tài),那么就為所有的模塊創(chuàng)建一個(gè)共用的定義池。對(duì)于后者來說,定義池就會(huì)以在第一個(gè)plugin中發(fā)現(xiàn)的參數(shù)來初始化。在每一個(gè)模塊中應(yīng)該聲明對(duì)應(yīng)的plugin,并且在整個(gè)應(yīng)用<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>當(dāng)中,moduleAware都應(yīng)該處于同一狀態(tài)。
Tiles中的路徑都是相對(duì)于main context來說的。
你不必指定具體的TilesRequestProcessor,plug-in會(huì)自動(dòng)處理,然而,你想指定你自己的RequestProcessor,那么它應(yīng)該繼承自TilesRequestProcessor。plug-in會(huì)檢查這項(xiàng)約束。
5.定義文件的語(yǔ)法
定義文件的語(yǔ)法可以在 tiles-config_1_1.dtd 文件中找到。
下面是一個(gè)簡(jiǎn)單的例子:
  
    
      <!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.調(diào)試 (Debugging)
若想調(diào)試由Tiles組建的頁(yè)面,可以遵循下面的建議:
l 獨(dú)立的檢查每一個(gè)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">測(cè)試</nobr>它們是否運(yùn)行正常。
Tiles 日志生效,詳情請(qǐng)查閱 commons-logging 包的幫助文件。

Struts中Tiles標(biāo)簽簡(jiǎn)介


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 日本在线观看中文字幕 | 四虎精品影院永久在线播放 | 一级黄色a毛片 | 欧美一级h | 亚洲最大黄色网址 | 精品国产欧美一区二区三区成人 | 奇米奇米色 | 99久热只有精品视频免费看 | 久久99精品久久久久久臀蜜桃 | 色视在线 | 奇米影视播放器 | 日韩久久精品一区二区三区 | 亚洲欧洲精品成人久久曰 | 欧美国产永久免费看片 | 免费观看毛片视频 | 香蕉网站在线观看影院 | 国产亚洲免费观看 | 国产精品99久久久久久www | 日本一区二区三区免费高清在线 | 91成年人视频 | 95视频在线观看在线分类h片 | 99爱网站 | 极品女神西比尔久久精品 | 5060午夜一级毛片 | 欧美巨大xxxx做受孕妇视频 | 亚洲精品福利在线观看 | 四虎永久网址在线观看 | 国产精品麻豆99久久 | 毛片a区| 亚洲 国产 图片 | 一级特级毛片 | 在哪里可以看毛片 | 久视频免费精品6 | 日韩视频免费在线播放 | 成人黄色一级毛片 | 日本一级毛片在线看 | 日韩欧美在线免费观看 | 欧美在线一级毛片观看 | 日狠狠 | 成人夜色香网站在线观看 | jizz成熟丰满中国妇女 |