Struts2使用属性标记从jsp访问ActionContext

时间:2012-08-08 19:21:37

标签: java struts2 actioncontext

我一直在查找这些信息,但似乎并没有太多在线。

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

基本上我想获得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}"/>

以及这些的更多组合。

由于

3 个答案:

答案 0 :(得分:3)

您是否尝试过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中,您可以使用locale访问<s:property>属性。

<s:property value="locale"/>

我希望它有所帮助。

答案 1 :(得分:2)

更直接的方法是:

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

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

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

答案 2 :(得分:1)

您可以将其用作:

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

这将直接从会话

获取语言环境