`
haierboos
  • 浏览: 451755 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

本文为原创,如需转载,请注明作者和出处,谢谢!

标签文件是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标签使用例子

    在压缩包中的"example"文件可能包含了一个或多个使用Struts2标签的实际示例,可以参考这些示例来理解和学习Struts2标签的用法。通过实践,你会更好地掌握这些标签的功能和用法,从而在开发过程中更加得心应手。

    struts2 向结果传参数

    1. **在struts.xml配置文件中传递参数** 在struts.xml中,你可以直接在`&lt;result&gt;`标签内使用`param`元素来定义参数。例如: ```xml &lt;param name="location"&gt;/pages/myPage.jsp ${myValue} ``` 这里,`...

    struts2标签大全

    在Struts2中,使用了一系列的标签库来增强JSP页面的功能,使得开发者可以更方便地实现业务逻辑与视图的分离,提高代码的可读性和可维护性。本篇文章将详细介绍Struts2中的各种标签及其应用。 1. **s:form标签**:这...

    struts2 自定义标签

    在Struts2中,自定义标签是提高代码可读性和可维护性的重要工具。本文将深入探讨Struts2自定义标签的实现机制、优点以及如何在实际项目中进行应用。 一、Struts2自定义标签的概念 自定义标签是JSP的一种扩展,允许...

    struts2的struts.properties配置文件详解

    3. struts.configuration.files:这是Struts2自动加载的一个配置文件列表,Struts2会自动加载这些文件中的设置和参数。 4. struts.configuration.xml.reload:这是一个布尔值,用于确定是否加载XML配置文件。如果...

    struts2标签库struts2标签库struts2标签库

    例如:&lt;s:param name="test" value="testValue" /&gt;,该标签将将“test”参数传递到Action中,并将其值设置为“testValue”。 在Struts2标签库中,还有许多其他的标签,如&lt;s:checkbox /&gt;、&lt;s:radio /&gt;、&lt;s:textarea ...

    Struts2标签列表及说明

    Struts2 标签列表及说明 Struts2 是一个基于 Java 语言的 Web 应用程序 Framework,它提供了许多标签来帮助开发者快速构建 Web 应用程序。下面是 Struts2 的标签列表及说明: A: * &lt;s:a&gt;:超链接,类似于 HTML ...

    struts2标签库例子

    Struts2 标签库详解 Struts2 提供了一个强大的标签库,用于简化 Web 应用程序的开发过程。这些标签可以分为两类:通用标签和 UI 标签。下面,我们将详细介绍 Struts2 标签库的使用。 4.1 通用标签 通用标签用来...

    struts2标签api

    这些标签通常与Struts2的配置文件相结合,可以传递参数,实现动态链接和导航。 2. **数据展示标签**:这一类标签用于在页面上展示数据,如`s:property`标签用于显示对象的属性值,`s:debug`用于调试,显示当前上下...

    Struts2实例 国际化 类型转换 struts标签

    这个实例项目展示了如何在实际应用中结合Struts2、国际化、类型转换以及Struts2自定义标签来实现用户管理功能,包括用户数据的增删改查。 首先,我们来看Struts2的核心概念。Struts2作为MVC框架,它负责处理HTTP...

    Struts2页面开发中常用的标签介绍

    ### Struts2页面开发中常用的标签介绍 #### 一、Struts2常用标签概述 Struts2框架在Java Web开发中被广泛应用于构建MVC架构的应用程序。它提供了丰富的标签库来简化页面开发过程,使得开发者能够更加高效地处理...

    struts2-4标签库文件上传下载

    要使用Struts2标签,首先需要确保项目中包含了Struts2的核心库文件`Struts2-core-2.1.11.jar`。接着,在JSP页面中通过以下代码导入Struts2的标签库: ```jsp &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; ``` 在...

    Struts2自定义分页标签

    4. **创建分页标签库**:Struts2支持自定义标签,你可以创建一个`.tld`文件来定义分页标签。标签库应该包含开始、结束、上一页、下一页等标签,以便在视图层中方便地使用。 5. **实现标签处理类**:对应的Java类...

    Struts2中实现页面的跳转

    在Struts2框架中,页面跳转是常见的需求,它涉及到前端控制器的设计模式以及请求处理流程。`&lt;jsp:forward/&gt;`标签在JavaServer Pages (JSP)中用于将一个请求转发到另一个资源,比如从一个JSP页面跳转到另一个JSP页面...

    Struts2讲义-作者:吴峻申

    - 在`web.xml`文件中配置Struts2的过滤器`FilterDispatcher`,它是Struts2的核心组件。 - 通过指定过滤器的初始化参数,可以控制Struts2的行为。 - **使用配置文件struts.xml实现页面导航定义**: - `struts.xml`...

    struts2常用标签详解

    本文将深入解析Struts2中的常用标签,这些标签在实际开发中非常实用,对于初学者理解并掌握Struts2的运行机制至关重要。 首先,我们需要了解Struts2标签库的主要组成部分,它们分为Action、Display、Logic、Field和...

    Struts2实战

    3. Struts2框架的使用:在使用Struts2框架进行Web开发时,需要定义Action类来处理用户的请求,然后在struts.xml配置文件中配置Action类的映射关系。Struts2提供了丰富的类型转换器和数据校验器,可以方便的进行数据...

    基于struts2 自定义标签 分页

    3. **配置struts.xml**:在Struts2配置文件中,你需要声明你的Action和对应的Result类型。此外,还需要为自定义标签添加配置,这样在JSP中才能使用。这包括指定标签的namespace、class以及可能的属性。 4. **JSP...

Global site tag (gtag.js) - Google Analytics