1

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

为了简单起见,我们如何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}"/>

以及这些的更多组合。

谢谢

4

3 回答 3

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"/>

我希望它有所帮助。

于 2012-08-08T21:30:54.160 回答
2

更直接的方法是说:

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

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

<struts>
  <constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
  ...
</struts>
于 2013-02-14T05:50:22.430 回答
1

您可以将其用作:

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

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

于 2013-08-05T06:35:15.257 回答