a719195733 2015-04-17 02:37 采纳率: 30.8%
浏览 1979
已采纳

Spring基于请求的的国际化问题

spring基于URL请求改变语言环境

已经完成基于浏览器的国际化,现在添加基于URL请求的国际化,查资料后配置如下,
资料不全,配置起来后总有问题,发出来步骤,求大虾指点。

messageSource 以及 properties已经配置好

1.在xml中添加
图片说明
2.重写类
图片说明
3.后台设置
图片说明
4访问
图片说明

一个共设置这么多,哪里哪里有陋或者错的,求指点

  • 写回答

3条回答 默认 最新

  • WorldMobile 2015-04-17 02:52
    关注

    Spring对国际化的支持

    Spring使用拦截器支持国际化很方便,使用时只需要两个步骤:
    一.spring配置
    具体配置方式如下:

    class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />



    /util:list

    class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">


    这时还需要本地化处理器进行处理,有三种处理器,如下:

    1. 基于session

    1. 基于请求


    3.基于cookie

    以上三种处理器理论上配置任意一个就可以,不过有两点需要注意:

    1)第二个不能直接使用,需要通过继承重写相应的方法,如下:

    public class MyLocaleResolver extends AcceptHeaderLocaleResolver{

    private Locale myLocal;
    public Locale resolveLocale(HttpServletRequest request) {
    return myLocal==null?request.getLocale():myLocal;
    }
    public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
    myLocal = locale;
    }

    }

    修改配置文件中的localeResolver配置,class指向这个类就可以了。

    2)第一与第三个用法相同,只不过前者使用session,session过期就需要重新设置,而后者使用cookie,可以根据项目的具体情况进行选择。

    一般来说,使用第一种和第三种比较常见。

    二.使用方法

    当不做处理时默认会使用浏览器自己的语言设置,如果想改变语言,只需要在请求后面加上一个参数即可,

    默认的参数名为locale,里面放的就是你的提交参数,如:en_US,zh_CN之类的,

    所以,只需要在页面上加上相应的链接即可,如下:

    中文

    英文

    页面中使用jstl或spring标签,如下:


    无论使用哪种处理器,locale设置过一次就可以了,不需要每个连接后面都加上locale参数。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器