更改struts2的默认语言环境

时间:2014-01-24 10:13:32

标签: struts2 internationalization locale

如何将struts.properties文件中指定的struts2默认语言环境修改为struts.locale?

默认语言环境为“en”,我需要将其更改为“en_Us”

我尝试如下

<constant name="struts.locale" value="en_US" />

在我的struts.xml文件中。

2 个答案:

答案 0 :(得分:0)

我知道这是迟到的回答,但总有一天会有人发现这是他或她长期以来所寻找的。

Struts2框架根据浏览器的语言首选项设置默认语言环境,即查看Accept-language请求标头,如果没有找到,则转到struts属性。

因此,如果要更改为语言环境en_US,则应在浏览器参数中设置它,设置为首选语言。

如果要更改此行为,可以编写拦截器,该拦截器将为ActionContext设置所需的区域设置。 这里参考API http://struts.apache.org/maven/struts2-core/apidocs/com/opensymphony/xwork2/ActionContext.html#setLocale(java.util.Locale) 不要忘记将拦截器放在struts.xml文件中的拦截器堆栈中。

关于创建自己的拦截器的教程: http://www.tutorialspoint.com/struts_2/struts_interceptors.htm

希望,它会对某人有所帮助。

答案 1 :(得分:0)

添加到 Yan Pak 的回答中,使用以下自定义拦截器对区域设置进行硬编码,忽略 Struts 试图根据浏览器的 Accept-Language 标头执行的任何操作。

import java.util.Locale;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

public class USLocaleInterceptor implements Interceptor {
  private static final long serialVersionUID = 1L;

  @Override
  public void destroy() { }

  @Override
  public void init() { }

  @Override
  public String intercept(ActionInvocation invocation) throws Exception {
    invocation.getInvocationContext().setLocale(Locale.US);
    return invocation.invoke();
  }
}