设置语言 springMVC/Thymeleaf

Set language springMVC/Thymeleaf

我正在使用 Spring MVC 和具有 Java 配置的 Thymeleaf 开发一个网络应用程序。在 html 页面的模板中,通过以下代码将语言设置为瑞典语:

<html lang="sv">

并通过此元标记将编码设置为 UTF-8:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

但由于某些原因,不会显示瑞典字母。

我尝试将 <html> 标签更改为 XHTML 版本 xml:lang="en",但没有任何区别。

因为我对 Spring 和 Thymeleaf 还是很陌生,所以我不知道哪里出了问题,或者 language/charset 应该是 stated/set 所以我给你 thymeleaf 配置代码和页面控制器:

@Configuration
public class ThymeleafConfig {

    @Bean
    public ServletContextTemplateResolver templateResolver() {
        ServletContextTemplateResolver resolver = new ServletContextTemplateResolver();
        resolver.setPrefix("/WEB-INF/pages/");
        resolver.setSuffix(".html");
        resolver.setTemplateMode("HTML5");
        resolver.setOrder(1);
                resolver.setCacheable(false);
        return resolver;
    }

    @Bean
    public SpringTemplateEngine templateEngine() {
        SpringTemplateEngine engine = new SpringTemplateEngine();
        engine.setTemplateResolver(templateResolver());
        return engine;
    }

    @Bean
    public ThymeleafViewResolver thymeleafViewResolver() {
        ThymeleafViewResolver resolver = new ThymeleafViewResolver();
        resolver.setTemplateEngine(templateEngine());
        return resolver;
    }
}

控制器:

@Controller
public class IndexController {

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public ModelAndView index() {
        ModelAndView model = new ModelAndView();
        model.setViewName("index");
        return model;
    }
}

将以下行添加到 ThymeleafConfig 中的 templateResolver

resolver.setCharacterEncoding("UTF-8");

docs setCharacterEncoding 中所述:

Specifies the character encoding to be set into the response when the view is rendered.

只有当 属性 characterEncoding 被添加到 ServletContextTemplateResolverThymeleafViewResolver 时我才得到正确的编码。

<bean id="templateResolver"
      class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
    ...
    <property name="characterEncoding" value="UTF-8"/>
</bean>
<bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
    ...
    <property name="characterEncoding" value="UTF-8"/>
</bean>