【问题标题】:Set language springMVC/Thymeleaf设置语言 springMVC/Thymeleaf
【发布时间】:2015-01-21 00:11:09
【问题描述】:

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

<html lang="sv">

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

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

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

我尝试将&lt;html&gt; 标记更改为XHTML 版本xml:lang="en",但没有任何区别。

由于我对 Spring 和 Thymeleaf 还很陌生,我不知道哪里出了问题,或者应该在哪里声明/设置语言/字符集,所以我给你 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;
    }
}

【问题讨论】:

    标签: java spring spring-mvc thymeleaf


    【解决方案1】:

    只有当characterEncoding 属性同时添加到ServletContextTemplateResolver 和ThymeleafViewResolver 时,我才能得到正确的编码。

    <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>
    

    【讨论】:

      【解决方案2】:

      将以下行添加到templateResolver in ThymeleafConfig:

      resolver.setCharacterEncoding("UTF-8");
      

      如docs setCharacterEncoding 中所述:

      指定在响应时设置的字符编码 视图被渲染。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-11
        • 1970-01-01
        • 2016-09-05
        • 2021-01-31
        • 1970-01-01
        • 2010-09-09
        • 2012-04-29
        • 2016-01-31
        相关资源
        最近更新 更多