您的位置:首页 > 编程语言 > Java开发

struts2 国际化 cookie保存语言, 下次访问时显示当前设置的语言

2009-10-28 11:49 337 查看
最近在看struts2的国际化, i18n拦截器代码很简单, 具体是根据访问参数和session方式来控制语言, 其实每次都更改语言还是很麻烦的, 特别做了一个Cookie保存当前语言设置, 仅仅一个例子供大家参考, 修改i18n的拦截器代码.

流程处理: 首先判断parameters里面有没有语言选择参数, 有则取出放到cookie, 如果没有则从cookie中取, 放到parameters, 这样就可以实现本地保存, 最终和i18n的拦截器互动, 即使以后struts改了, 我们也能灵活处理; 当然也可以完全从新实现i18n的拦截器功能, 但是那样我觉得后期如果struts i18n方式一变就有点被动.

代码如下:

package sh.mgr.ui.interceptor;
2
3import java.util.Locale;
4import java.util.Map;
5
6import javax.servlet.http.Cookie;
7import javax.servlet.http.HttpServletRequest;
8import javax.servlet.http.HttpServletResponse;
9
10import org.apache.struts2.ServletActionContext;
11
12
13import com.opensymphony.xwork2.ActionInvocation;
14import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
15import com.opensymphony.xwork2.interceptor.I18nInterceptor;
16import com.opensymphony.xwork2.util.LocalizedTextUtil;
17import com.opensymphony.xwork2.util.logging.Logger;
18import com.opensymphony.xwork2.util.logging.LoggerFactory;
19
20

<package name="myDefPkg" extends="struts-default" abstract="true">
2 <interceptors>
3 <interceptor name="i18nSh" class="sh.mgr.ui.interceptor.I18nSh"></interceptor>
4 <interceptor-stack name="myStack">
5 <interceptor-ref name="i18nSh"></interceptor-ref>
6 <interceptor-ref name="defaultStack"></interceptor-ref>
7 </interceptor-stack>
8 </interceptors>
9 <default-interceptor-ref name="myStack" />
10</package>
11<package name="account" extends="myDefPkg">
12 ..
13</package>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐