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发行包,不使用请求参数),请跟贴!   



国内最棒的Google Android技术社区(eoeandroid),欢迎访问!

《银河系列原创教程》发布

《Java Web开发速学宝典》出版,欢迎定购

posted on 2009-02-26 19:51 银河使者 阅读(1635) 评论(0)  编辑  收藏 所属分类: Struts2web 原创


专题:Android  iPad  jQuery  Chrome OS

博客园首页  IT新闻  知识库  学英语  Java程序员招聘
标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录      
每天10分钟,轻松学英语


网站导航:
 
<2009年2月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
1234567

导航

统计

公告

我的其他blog

http://nokiaguy.cnblogs.com
http://blog.csdn.net/nokiaguy

我的著作





正在读的书




常用链接

留言簿(31)

我参与的团队

随笔分类(662)

随笔档案(255)

文章分类(1)

文章档案(3)

相册

ADSL、3G查询

CSDN

eclipse

ibm

Java EE

Linux

Web

云服务

代理网站

关注的网站

喜欢的Blog

图书出版

开发工具

手机铃声

操作系统

数学

文件格式

源码资源

移动(Mobile)

编程语言

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜