Spring和Thymleaf-如何根据用户字段设置区域设置

时间:2018-07-17 13:28:08

标签: spring thymeleaf

我正在使用Spring Boot +百里香模板引擎。

我使用标准的语言环境cookie来设置语言环境,但是我还需要将用户语言环境保存在数据库中(实际上我在数据库中保存了带有语言标签的字符串)。

然后我向控制器添加了@ControllerAdvice,以检查是否已登录用户并设置区域设置。它有效,但不适用于Thymeleaf th:text标签...

@ModelAttribute
    public void addUserRef(Model model, HttpServletRequest request){
        User user = authFacade.getAuthenticatedUser();

        if(user != null){

            LocaleContextHolder.setLocale(user.getLocale());
}
}

如果我没有写类似th:text="#{message_text}"的语言环境,则它只会使用cookie的语言环境值。

如何配置Thymeleaf以根据用户区域设置使用区域设置?

我以这种方式配置Thymleaf

@Bean
        public ClassLoaderTemplateResolver templateResolver() {

            ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();

            templateResolver.setPrefix("templates/");
            templateResolver.setCacheable(false);
            templateResolver.setSuffix(".html");        
            templateResolver.setTemplateMode("HTML5");
//          templateResolver.setCharacterEncoding("UTF-8");

            return templateResolver;
        }

        @Bean

        public SpringTemplateEngine templateEngine() {

            SpringTemplateEngine templateEngine = new SpringTemplateEngine();
            templateEngine.setTemplateResolver(templateResolver());
            templateEngine.setMessageSource(messageSource);
            templateEngine.addDialect(springSecurityDialect());

            return templateEngine;
        }

        @Bean

        public ViewResolver viewResolver() {

            ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();

            viewResolver.setTemplateEngine(templateEngine());
            viewResolver.setCharacterEncoding("UTF-8");
            viewResolver.setOrder(1);

            return viewResolver;
        }  

0 个答案:

没有答案