0

如果我有一个带有转发到 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" />了,但它不起作用。

4

1 回答 1

4

当您编写 时<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" />

免责声明:我没有测试过这个

于 2012-08-27T21:51:06.423 回答