本文为原创,如需转载,请注明作者和出处,谢谢!
标签文件是JSP自定义标签中的一种,实现的方法在WEB-INF/tags目录或子目录中建立一个.tag文件,如table.tag,并通过taglib指令来引用.tag文件所在的目录,代码如下:
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><%@taglibprefix="t"tagdir="/WEB-INF/tags"%>
如果在标签文件中使用Struts 2标签,就会带来一个问题。下面先看一个例子。
在WEB-INF/tags目录中建立一个table.tag文件,代码如下:
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><%@taglibprefix="s"uri="/struts-tags"%>
<%@attributename="index"type="java.lang.String"required="true"%>
<tableborder="1"style="font-size:25px">
<s:iteratorvar="row"value="${index}">
<tr>
<s:iteratorvar="cell"value="row">
<td>
<s:propertyvalue="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表达式来读取。使用这种方法可以将上面的代码修改为如下的形式:
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->
<%@taglibprefix="s"uri="/struts-tags"%>
<tableborder="1"style="font-size:25px">
<!--使用Ognl表达式引用index-->
<s:iteratorvar="row"value="index">
<tr>
<s:iteratorvar="cell"value="row">
<td>
<s:propertyvalue="cell"/>
</td>
</s:iterator>
</tr>
</s:iterator>
</table>
下面的代码调用了table标签文件,并传递了index参数值:
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglibprefix="t"tagdir="/WEB-INF/tags"%>
<%@taglibprefix="s"uri="/struts-tags"%>
<!--index参数值为grid1-->
<s:setvar="index"value="grid1"/>
<t:table/>
<!--index参数值为grid2-->
<s:setvar="index"value="grid2"/>
<t:table/>
哪位读者还有其他的方法传递index参数值(不能直接修改Struts2发行包,不使用请求参数),请跟贴!
国内最棒的Google Android技术社区(eoeandroid),欢迎访问!
《银河系列原创教程》发布
《Java Web开发速学宝典》出版,欢迎定购
分享到:
相关推荐
struts2 <s:if>标签使用struts2 <s:if>标签使用struts2 <s:if>标签使用struts2 <s:if>标签使用struts2 <s:if>标签使用struts2 <s:if>标签使用
struts2标签库struts2标签库struts2标签库struts2标签库
我们知道,Struts2完成参数传递处理工作的基础是OGNL和ValueStack。而在这个 过程中,我也把Struts2所要做的工作大致归纳为两个方面: 1. 对OGNL操作进行封装,完成OGNL表达式所表示的值到Java对象的值传递机制 2. ...
struts2标签使用例子 struts2标签使用例子 struts2标签使用例子struts2标签使用例子
Struts2中关于s:tree标签的使用,详细的例子说明,带图片演示
STRUTS:struts2标签库
javascript中读取Struts2标签datetimepicker的值.docjavascript中读取Struts2标签datetimepicker的值.docjavascript中读取Struts2标签datetimepicker的值.docjavascript中读取Struts2标签datetimepicker的值....
struts2.0中s:datetimepicker标签使用范例
struts标签 • Bean Tags:该标签库包含的标签可以用来创建bean、访问bean和访问bean的属性。同时提供了依据cookies、headers和parameters的值创建相关bean的能力。 HTML Tags:该标签库包含的标签可以用来创建...
STRUTS2学习文档.pdf 对Struts2的一些配置文件进行了详细的说明。 Struts2―表单验证validate(html)对validate的type属性校验类型以及param 做了详细的解释说明。 struts2和struts的比较 让你更清楚的知道struts2...
Struts2 Design and Programming: A Tutorial.pdf 是一本介绍Struts2的设计和编程思想的书,也可以作为一本手册来使用
一个struts2的用户管理实例,涉及增删改查。 主要用到的技术: 1.struts2 2.国际化 3.类型转换 4.struts标签
Struts 2.1.8 学习源码内容 Struts2_01FirstDemo : 跑通第一个Struts2的实例 Struts2_02CURD : 关于Struts2的增、删、改和查 实际业务中数据来自数据库,从DAO层查询...Struts2_06FileUpload : Struts2上传文件的使用
Struts2漏洞检查工具2019版 警告: 本工具为漏洞自查工具,请勿非法攻击他人网站! ==漏洞编号==============影响版本=========================官方公告==========================================影响范围====...
Struts2标签库Struts2标签库Struts2标签库Struts2标签库Struts2标签库Struts2标签库
struts2环境搭建+struts2 新闻发布系统+struts2 留言板 struts2环境搭建:基础框架搭建,简单易上手,...struts2 留言板:struts2+jquery 直接导入myecplise中即可使用,很好用,可以在此基础上添加并完善项目将更完美。
Struts2中实现自定义标签很简单,主要分为3步: 1.创建taglib文件(.tld),编写标签声明。 2.编写自定义标签类。 3.在页面中使用标签。 下面以一个自定义的分页标签为例,进行说明。 其实,开发自定义标签并不...
针对Struts1的网页版的Struts Design and Programming A Tutorial
通过struts2 自定义标签实例,可以用这个对项目中的实现自定义标签。从而减少代码。
struts 2 s标签 a标签创建一个HTML超链接,等价于HTML 的 示范代码: <s:a href="login.action">登陆</s:a>