java - Struts 2 Action 标签,检索属性

标签 java jsp struts2 struts

如果我有一个典型的设置,其中包含转发到 JSP 的操作,我会像这样请求我的属性:

<s:property value="myVariable" />

其中 myVariable 是操作中的变量。

我想在另一个页面中使用这样的操作标签:

<s:action name="actionName" executeResult="false"> 
    <s:param name="switch">true</s:param>
</s:action>

如何访问myVariable当使用像上面这样的 Action 标签时?我试过<s:property value="myVariable" />但它不起作用。

最佳答案

当你写<s:property value="myVariable" />时,Struts 寻找属性myVariable在其“值(value)堆栈”中。当前操作位于 ValueStack 中,这就是典型设置起作用的原因。现在,对于

<s:action name="actionName" executeResult="false"> 
    <s:param name="switch">true</s:param>
</s:action>
<s:property value="myVariable" />

当执行最后一行时 actionName Action 已经执行,当前 Action 不是那个,而是主要(“外部”) Action 。如果您想访问“内部”操作的属性,您有多种选择,其中两个显示在 docs 中。 :

添加var属性,以便将执行的(内部)操作分配给变量并使用 # syntax 引用它:

<s:action name="actionName" var="innerAction" executeResult="false">
   <s:param name="switch">true</s:param>
</s:action>
<s:property value="#innerAction.myVariable" />

或者,在您的操作方法中,将属性值显式添加到某个范围(例如:属性)

// in your inner action: 
ServletActionContext.getRequest().setAttribute("myVariable", "blah blah");

<s:property value="#attr.myVariable" />

免责声明:我没有测试过

关于java - Struts 2 Action 标签,检索属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12149190/

相关文章:

java - 是否可以在replaceAll上使用字符串变量?

java - 如何让 IntelliJ IDEA 从 Gradle 配置中尊重 user.language 和 user.country?

java - 从下到上迭代元素列表的最佳方法是什么?

web-applications - Struts 2 迁移到 Spring MVC

struts2 - 访问struts2在struts中的另一个jsp页面中包含param值if标签

java - 从 java 连接到 DotNet Web 服务的最佳方式是什么?

java - 找不到Struts2.3资源

java - 如何在 JSP 中过滤使用表达式语言显示的表?

javascript - 如何使用javascript调用Struts2 Action Class方法中的方法

java - 绝对 uri : http://java. sun.com/jsp/jSTL/core 无法在 web.xml 或随此应用程序部署的 jar 文件中解析