Discuss / Java / 说几个我改的地方

说几个我改的地方

Topic source

Loading...

#1 Created at ... [Delete] [Delete and Lock User]
   //AppConfig页面
    @Bean
    LocaleResolver createLocaleResolver(){
        CookieLocaleResolver cookieLocaleResolver = new CookieLocaleResolver();
        //廖大将setDefaultLocale设置为了Locale.ENGLISH,这里取default相当于服务器上的
        cookieLocaleResolver.setDefaultLocale(Locale.getDefault());
        cookieLocaleResolver.setDefaultTimeZone(TimeZone.getDefault());
        return cookieLocaleResolver;
    }

    //Intecptor拦截器页面
    //廖大将setDefaultLocale设置为了Locale.ENGLISH,这样处理后在拦截器页面
    Locale locale = localeResolver.resolveLocale(request);
    System.out.println(locale);
    //locale为en,所以你要有对应的messages_en.properties文件,messageSource才能找到它,自己建一个(注意项目编码格式)


    //Controller页面
    @GetMapping("/locale/{local}")
    public String local(@PathVariable("local") String local, HttpServletRequest servletRequest, HttpServletResponse         servletResponse){
        //在这里把一个locale对象设置为路由传过来的参数并传递给localeResolver
        Locale locale=new Locale(local);
        localeResolver.setLocale(servletRequest,servletResponse,locale);
        return "redirect:/";
    }

到这整个效果就已经实现了。

关于其他:

createExtension那直接没看懂。老大不给点注释好难理解啊,用这种方式已经跑通了,
<a href="/signin">{{ __messageSource__.getMessage('signin', null, __locale__) }}</a>

还有就是在controller页面

   @GetMapping("/locale/{lo}")
    public String setLocale(@PathVariable("lo") String lo, HttpServletRequest request, HttpServletResponse response) {
        // 根据传入的lo创建Locale实例:
        Locale locale = null;
        int pos = lo.indexOf('_');
        if (pos > 0) {
            String lang = lo.substring(0, pos);
            String country = lo.substring(pos + 1);
            locale = new Locale(lang, country);
        } else {
            locale = new Locale(lo);
        }
        // 设定此Locale:
        localeResolver.setLocale(request, response, locale);

廖大感觉这个判断没必要啊,lo是我在页面写死的,根本不可能会有下划线啊。我直接就这么设置的

 //在这里把一个locale对象设置为路由传过来的参数并传递给localeResolver
        Locale locale=new Locale(local);
        localeResolver.setLocale(servletRequest,servletResponse,locale);
        return "redirect:/";

然后总结一下:

流程就是根据请求头中

Accept-Language: zh-CN,zh;q=0.8,en;q=0.2

找到对应本地化properties文件,并渲染数据到modelView中。

Loading...

#2 Created at ... [Delete] [Delete and Lock User]

回复的时候好好这个文本格式好难调啊,又乱了,,,


  • 1

Reply