2015-01-21 3 views
1

Я работаю над webapp, используя Spring MVC и Thymeleaf с Java-конфигурацией. В шаблоне для html страницы язык установлен быть шведский через этот код:Set language springMVC/Thymeleaf

<html lang="sv"> 

И кодировка устанавливается в кодировке UTF-8 с помощью этого мета-тег:

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

Но по какой-то причине , который не отображает шведские буквы.

Я попытался изменить тег <html> на версию XHTML xml:lang="en", но это не имеет значения.

Поскольку я все еще очень новичок в Spring и 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; 
    } 
} 

ответ

1

Добавьте следующую строку в templateResolver в ThymeleafConfig:

resolver.setCharacterEncoding("UTF-8"); 

Как отмечалось в docssetCharacterEncoding:

Задает кодировку символов, чтобы быть установлен в ответ, когда вид визуализации.

2

Я получил правильное кодирование только тогда, когда свойство 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>