隨筆 - 63  文章 - 0  trackbacks - 0
          <2009年4月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          Struts2標簽使用原理解疑
          在筆者下載的Struts2的包中,讀者可以在/lib下找到struts2-core-2.0.11.1.jar包,解壓該包在其根目錄下的/META-INF文件夾下可以看到一個名字為“struts-tags.tld”文件。該文件就是Struts2中所有自帶的標簽庫定義。本節通過對該文件代碼的介紹來讓讀者知曉Struts2內部是如何使用這些標簽來進行工作。并簡單說明JSP中是如何用其來書寫標簽代碼。
          技術要點
          本節代碼說明Struts2內部定義標簽的格式和在JSP中使用方式。
          ? struts-tags.tld文件定標簽定義配置格式。
          ? JSP中使用標簽功能介紹。

          演示代碼
          Java代碼
          1. <!------------------文件名: struts-tags.tld----------------->   
          2. <taglib>   
          3.   <tlib-version>2.2.3</tlib-version>   
          4.   <jsp-version>1.2</jsp-version>   
          5.   <short-name>s</short-name>   
          6.   <uri>/struts-tags</uri>   
          7.   <display-name>"Struts Tags"</display-name>   
          8.   <description>………………</description>   
          9.   <tag>   
          10.     <name>action</name>   
          11.     <tag-class>org.apache.struts2.views.jsp.ActionTag</tag-class>   
          12.     <body-content>JSP</body-content>   
          13.     <description><![CDATA[Execute an action from within a view]]></description>   
          14.     <attribute>   
          15.       <name>executeResult</name>   
          16.       <required>false</required>   
          17.       <rtexprvalue>false</rtexprvalue>   
          18.       <description><![CDATA[Whether the result of this action (probably a view) should be executed/rendered]]></description>   
          19.     </attribute>   
          20.    …………………………   
          21.     <attribute>   
          22.       <name>namespace</name>   
          23.       <required>false</required>   
          24.       <rtexprvalue>false</rtexprvalue>   
          25.       <description><![CDATA[Namespace for action to call]]></description>   
          26.     </attribute>   
          27.   </tag>   
          28. </taglib>  

          代碼解釋
          (1)struts-tags.tld是Struts2自標簽定義文件。所有標簽定義都是在<tablib>和</taglib>之間定義。以<tag></tag>用來定義一個具體標簽。每個標簽因為都可以有很多自己的屬性。這些屬性定義都是以<attribute></attribute>來定義。
          (2)<tlib-version></tlib-version>之間定義的是標簽庫的版本。<jsp-version></jsp-version>定義的是標簽庫這些標簽是支持JSP的哪個版本。<short-name> </short-name>其實是標簽庫的默認名,也可以認為是其昵稱。<uri> </uri>定義的是標簽庫的URI,在JSP中會使用到。<display-name></display-name>是顯示名。<description></description>是標簽庫的記述,記述標簽庫的使用用途等等。
          (3)<attribute>中<name></name>是屬性名稱定義。<required></required>表示的該屬性是否是必須的屬性,如果是必須的則<required></required>之間為true,否則為false。<rtexprvalue></rtexprvalue>表示的是可否使用表達式,大多數標簽都是為false。這里不是不能使用表達式,而是恰恰相反表示可以使用表達式。<description></description>定義和前面介紹相同。
          (4)在JSP中,如之前章節的演示代碼所示,都是在文件頭有個使用標簽的聲明,代碼如下。
          Java代碼
          1. <!---------------------文件名: *.jsp------------------------->   
          2. <%@taglib prefix="s" uri="/struts-tags"%>  

          有了這個聲明,在JSP文件中就可以使用Struts2的標簽。比如form標簽定義要像如下代碼所示。
          Java代碼
          1. <s:form action="upload" ………>  

          記住一定要用“s”,它是Struts2中標簽的默認名也是相當于一個昵稱,當然讀者也可以把它改為自己想取的名字,不過在標簽聲明中的“prefix”中就要改成那個自己取的名字。
          注意:因為筆者使用的Servlet版本是2.3之上的版本,因此沒必要在web.xml中定義標簽庫。如果讀者使用的Servlet版本比較低,則在web.xml文件中需要定義如下的代碼:
          Java代碼
          1. <!----------------------文件名:web.xml----------------------->   
          2. <taglib>   
          3.     <!- 定義URI - ->   
          4.     <taglib-uri>/Struts 2-tags</taglib-uri>   
          5. <!- 定義標簽庫支持的jar包位置- ->   
          6.     <taglib-location>/WEB-INF/lib/struts2-core-2.0.11.1.jar</taglib-location>   
          7. </taglib>  

          只有這樣標簽庫才會在Servlet版本比較低的情況下使用有效果。
          posted on 2009-04-13 15:28 lanxin1020 閱讀(465) 評論(0)  編輯  收藏 所屬分類: struts2
          主站蜘蛛池模板: 铜山县| 和顺县| 九龙县| 德庆县| 五常市| 柘城县| 陆河县| 饶平县| 萨迦县| 荆门市| 乐山市| 柘城县| 郴州市| 东宁县| 调兵山市| 阿巴嘎旗| 云林县| 桃源县| 文成县| 克什克腾旗| 溧水县| 武威市| 孟津县| 军事| 宝兴县| 克什克腾旗| 定结县| 固安县| 樟树市| 凤庆县| 河西区| 沭阳县| 安岳县| 马公市| 密云县| 浪卡子县| 宜宾县| 青神县| 商河县| 乾安县| 敦化市|