【问题标题】:Struts2 access ActionContext from jsp using property tagStruts2使用属性标签从jsp访问ActionContext
【发布时间】:2012-08-08 19:21:37
【问题描述】:

我一直在查找此信息,但似乎网上没有太多信息。

为了简单起见,我们如何通过<s:property/>标签访问ActionContext

基本上我想获得com.opensymphony.xwork2.ActionContext.locale(当前语言环境)

我尝试了所有这些,但似乎没有一个有效

<s:property value="#com.opensymphony.xwork2.ActionContext.locale"/>
<s:property value="${#com.opensymphony.xwork2.ActionContext.locale}"/>
<s:property value="%{#com.opensymphony.xwork2.ActionContext.locale}"/>

以及这些的更多组合。

谢谢

【问题讨论】:

    标签: java struts2 actioncontext


    【解决方案1】:

    你试过locale.toString()吗?

    Locale: <s:property value='locale.toString()'/>
    

    编辑

    如果您想要 ActionContext 的值,请将其放入您的 action

    public class FooAction extends ActionSupport {
        ...
        private String locale; // TODO: Getters and setters
        ...
    
        @Override
        public String execute () {
            ...
            locale = ActionContext.getContext().getLocale().toString();
            ...
        }
    }
    

    然后在您的 jsp 中,您可以使用 &lt;s:property&gt; 访问 locale 属性。

    <s:property value="locale"/>
    

    希望对你有帮助。

    【讨论】:

    • 我想从 com.opensymphony.xwork2.ActionContext.locale 下的 action Context 或简单的 jsp 中获取值。你提供给我的那个会得到值堆栈中的那个。任何线索如何获得其他价值?
    • 如果您想在 s:if test="%{locale.toString() == 'fa_IR' 中检查它,还必须使用 locale.toString()。
    【解决方案2】:

    更直接的方法是:

    <s:property value="@com.opensymphony.xwork2.ActionContext@getContext().locale"/>
    

    为此,需要在 struts.xml 中启用静态方法调用

    <struts>
      <constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
      ...
    </struts>
    

    【讨论】:

      【解决方案3】:

      您可以将其用作:

      <%=session.getAttribute("WW_TRANS_I18N_LOCALE") %>
      

      这将直接从会话中获取语言环境

      【讨论】:

        猜你喜欢
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 2012-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-08
        • 1970-01-01
        相关资源
        最近更新 更多