Struts 2 Action标签,检索属性

时间:2012-08-27 20:33:23

标签: 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?我试过<s:property value="myVariable" />,但它不起作用。

1 个答案:

答案 0 :(得分: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动作已经执行,当前动作不是主动作(“外部”动作)。如果您想访问“内部”操作的属性,您有几种选择,其中两种显示在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" />

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

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

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

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