【问题标题】:Struts 2 Action tags, retrieving propertiesStruts 2 Action 标签,检索属性
【发布时间】:2012-08-22 08:47:57
【问题描述】:

如果我有一个带有转发到 JSP 的操作的典型设置,我会像这样请求我的属性:

<s:property value="myVariable" />

其中 myVariable 是操作中的变量。

我想在另一个页面中使用这样的动作标签:

<s:action name="actionName" executeResult="false"> 
    <s:param name="switch">true</s:param>
</s:action>

使用上述操作标签时如何访问myVariable?我试过&lt;s:property value="myVariable" /&gt;,但它不起作用。

【问题讨论】:

  • myVariableactionName 操作的属性吗?你是在s:action 元素内部还是在外部(下方)使用&lt;s:property value="myVariable" /&gt;
  • 是的 myVariable 是 actionName 动作类中的一个属性。 &lt;s:property value="myVariable" /&gt; 低于s:action

标签: java jsp struts2 struts


【解决方案1】:

当您编写&lt;s:property value="myVariable" /&gt; 时,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" />

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

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

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

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

【讨论】:

    猜你喜欢
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    相关资源
    最近更新 更多