当您编写 时<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
动作已经执行,当前动作不是那个,而是主要(“外部”)一个。如果您想访问“内部”操作的属性,您有几种选择,其中两个显示在文档中:
添加var
属性,以便将执行的(内部)操作分配给变量并使用# 语法引用它:
<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" />
免责声明:我没有测试过这个