如何将struts.properties文件中指定的struts2默认语言环境修改为struts.locale?
默认语言环境为“en”,我需要将其更改为“en_Us”
我尝试如下
<constant name="struts.locale" value="en_US" />
在我的struts.xml文件中。
答案 0 :(得分:0)
我知道这是迟到的回答,但总有一天会有人发现这是他或她长期以来所寻找的。 p>
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();
}
}