日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Struts 2杂谈(2):如何向标签文件中的Struts 2标签传递参数值

發布時間:2023/12/31 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Struts 2杂谈(2):如何向标签文件中的Struts 2标签传递参数值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
標簽文件是JSP自定義標簽中的一種,實現的方法在WEB-INF\tags目錄或子目錄中建立一個.tag文件,如table.tag,并通過taglib指令來引用.tag文件所在的目錄,代碼如下:

<%@?taglib?prefix="t"?tagdir="/WEB-INF/tags"%>
??? 如果在標簽文件中使用Struts 2標簽,就會帶來一個問題。下面先看一個例子。

??? 在WEB-INF\tags目錄中建立一個table.tag文件,代碼如下:

<%@?taglib?prefix="s"?uri="/struts-tags"%>
<%@?attribute?name="index"?type="java.lang.String"?required="true"?%>
<table?border="1"?style="font-size:25px">???
????
<s:iterator?var="row"?value="${index}">
????????
<tr>
????????????
<s:iterator?var="cell"?value="row">?
????????????????
<td>?
????????????????????
<s:property?value="cell"?/>
????????????????
</td>
????????
</s:iterator>
????????
</tr>
????
</s:iterator>
</table>

??? 在上面的標簽文件中使用了<s:iterator>和<s:property>標簽,<s:iterator>標簽的value屬性值使用了EL,這在低版本的Struts 2中是沒有任何問題的,但在Struts 2.0.11及以后的版本中默認情況下并不能在Struts 2屬性值中使用EL和JSP表達式(也就是說,rtexprvalue參數默認值是false),而只能使用Ognl表達式,而在這種情況下,上面的代碼是無法正常執行的。一種解決方法是將Struts 2的發行包中相應標簽的某個屬性的rtexprvalue參數值設為true,但這種方法并不通用,因為它直接修改了Struts 2。
??? 另外一種方法是通過<s:set>標簽將相應的值保存在ValueStack對象中,再使用Ognl表達式來讀取。使用這種方法可以將上面的代碼修改為如下的形式:

<%@?taglib?prefix="s"?uri="/struts-tags"%>
<table?border="1"?style="font-size:25px">?
????
<!--??使用Ognl表達式引用index??-->??
????
<s:iterator?var="row"?value="index">
????????
<tr>
????????????
<s:iterator?var="cell"?value="row">?
????????????????
<td>?
????????????????????
<s:property?value="cell"?/>
????????????????
</td>
????????
</s:iterator>
????????
</tr>
????
</s:iterator>
</table>

??? 下面的代碼調用了table標簽文件,并傳遞了index參數值:

<%@?page?language="java"?contentType="text/html;?charset=UTF-8" pageEncoding="UTF-8"%>
<%@?taglib?prefix="t"?tagdir="/WEB-INF/tags"%>
<%@?taglib?prefix="s"?uri="/struts-tags"%>

<!--??index參數值為grid1??-->
<s:set?var="index"?value="grid1"?/>?
<t:table/>?

<!--??index參數值為grid2??-->
<s:set?var="index"?value="grid2"?/>?
<t:table/>

??? 哪位讀者還有其他的方法傳遞index參數值(不能直接修改Struts2發行包,不使用請求參數),請跟貼!??? 國內最棒的Google Android技術社區(eoeandroid),歡迎訪問!

《銀河系列原創教程》發布

《Java Web開發速學寶典》出版,歡迎定購

總結

以上是生活随笔為你收集整理的Struts 2杂谈(2):如何向标签文件中的Struts 2标签传递参数值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。