一尘不染

Struts 2 Action标签,检索属性

jsp

如果我有一个典型的设置,并且带有可转发到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" />但是没有用。


阅读 196

收藏
2020-06-08

共1个答案

一尘不染

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

免责声明:我尚未对此进行测试

2020-06-08