我创建了一个带有语言环境类型的下拉列表,如英语,franch等和保存按钮。当我保存下拉值时保存在数据库中..我还有从数据库获取数据并存储在变量中的creatd方法..
我的要求是我在登录后打开任何页面,然后根据用户区域设置自动设置区域设置..
JSP:
<s:select label="Select Default Language"
headerKey="-1" headerValue="Select Default Language"
list="#{'en':'English', 'fr':'France'}"
name="user.requestLocale"
value="%{user.requestLocale}" />
</div>
//保存按钮... getter setter正常工作..
//我在js中获得区域设置值
var userLocalte = "<s:property value="%{requestLocale}"/>"; //en or fr
//如何更改区域设置.. //我正在使用这个无限循环
// window.location.href='<c:url value="?request_locale=fr"/>';
// strtus.xml
/*<interceptor-ref name="defaultStack">
<param name="i18n.parameterName">user.requestLocale</param>
</interceptor-ref> */
//单击链接可以正常工作..但我想让它自动更新
<s:url id="url" action="reloadupdate">
<s:param name="request_locale">%{locale.requestLocale}</s:param>
</s:url>
<s:a href="%{url}">Default Locale</s:a>
//我厌倦了另一种方法,但仅在该页面中有效
ActionContext.getContext().setLocale(Locale.FRANCE);
//下面的代码也不适用于所有页面
sessionMap.put(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE, "fr");
sessionMap.put("WW_TRANS_I18N_LOCALE", "fr");
答案 0 :(得分:1)
得到解决方案。
//en= ISO-639 Language Codes
//US=ISO-3166 Country Codes
String userLocale="en_US"; // this data is get from db , for french fr_FR
String userLanguage = userLocale.substring(0, 2);
String userCountry = userLocale.substring(3, 5);
Locale locale = new Locale(userLanguage,userCountry);
ActionContext.getContext().setLocale(locale);
sessionMap.put(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE, locale);