隨筆 - 312, 文章 - 14, 評論 - 1393, 引用 - 0
          數據加載中……

          Struts 2雜談(2):如何向標簽文件中的Struts 2標簽傳遞參數值

          本文為原創,如需轉載,請注明作者和出處,謝謝!

          上一篇:Struts 2雜談(1):ValueStack對象的傳送帶機制

              標簽文件是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發行包,不使用請求參數),請跟貼!   





          Android開發完全講義(第2版)(本書版權已輸出到臺灣)

          http://product.dangdang.com/product.aspx?product_id=22741502



          Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


          新浪微博:http://t.sina.com.cn/androidguy   昵稱:李寧_Lining

          posted on 2009-02-26 19:51 銀河使者 閱讀(4482) 評論(2)  編輯  收藏 所屬分類: Struts2 、web 、 原創

          評論

          # re: Struts 2雜談(2):如何向標簽文件中的Struts 2標簽傳遞參數值  回復  更多評論   

          index參數值是什么?謝謝
          2010-09-06 17:12 | Raphael

          # re: Struts 2雜談(2):如何向標簽文件中的Struts 2標簽傳遞參數值  回復  更多評論   

          有進一步的了解Thankyou?。?!
          2010-12-26 14:01 | Jocson
          主站蜘蛛池模板: 南城县| 海丰县| 独山县| 安康市| 安国市| 太保市| 元谋县| 临高县| 宣城市| 康定县| 辽宁省| 马鞍山市| 新宁县| 红原县| 乃东县| 青铜峡市| 翁牛特旗| 尚志市| 郑州市| 安溪县| 武强县| 仲巴县| 宜都市| 灌南县| 全椒县| 方山县| 遵义市| 宜黄县| 富蕴县| 綦江县| 凌海市| 敦煌市| 宁波市| 鄯善县| 常山县| 瓮安县| 中卫市| 鄂尔多斯市| 屏东县| 丰宁| 安平县|