在编写时
<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中:
添加
var属性,以便将执行的(内部)操作分配给变量,并使用#语法引用它:
<s:action name="actionName" var="innerAction" executeResult="false"> <s:param name="switch">true</s:param></s:action><s:property value="#innerAction.myVariable" />
或者,在您的操作方法中,将属性值显式添加到某个范围(例如:attribute)
// in your inner action: ServletActionContext.getRequest().setAttribute("myVariable", "blah blah");<s:property value="#attr.myVariable" />免责声明:我尚未对此进行测试



