如果我有一个典型的设置,其中包含转发到 JSP 的操作,我会像这样请求我的属性:
<s:property value="myVariable" />
其中 myVariable 是操作中的变量。
我想在另一个页面中使用这样的操作标签:
<s:action name="actionName" executeResult="false">
<s:param name="switch">true</s:param>
</s:action>
我如何访问myVariable
当使用像上面这样的动作标签时?我试过<s:property value="myVariable" />
但它不起作用。
当你写的时候<s:property value="myVariable" />
, Struts 寻找属性myVariable
在其“价值堆栈”中。当前操作位于 ValueStack 中,这就是典型设置起作用的原因。现在,在这样的情况下
<s:action name="actionName" executeResult="false">
<s:param name="switch">true</s:param>
</s:action>
<s:property value="myVariable" />
当执行最后一行时actionName
动作已经执行,当前动作不是那个,而是主要(“外部”)动作。如果您想访问“内部”操作的属性,您有多种选择,其中两个显示在docs http://struts.apache.org/2.x/docs/action.html:
要么添加var
属性,以便将执行的(内部)操作分配给一个变量并用# 句法 https://stackoverflow.com/a/11620838/277304:
<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" />
免责声明:我没有测试过这个
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)