2016-05-04 16 views
0

私のアプリケーションのThymeleafの設定は以下のように設定されている:Thymeleaf + Spring + TomcatでUTF-8サポートを有効にするにはどうすればよいですか?

@Bean 
public ServletContextTemplateResolver templateResolver() { 
    ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(); 
    templateResolver.setCacheable(false); 
    templateResolver.setTemplateMode("HTML5"); 
    templateResolver.setCharacterEncoding("UTF-8"); 
    templateResolver.setPrefix(HTML_VIEWS); 
    templateResolver.setSuffix(".html"); 

    return templateResolver; 
} 

@Bean 
public SpringTemplateEngine templateEngine() { 
    SpringTemplateEngine templateEngine = new SpringTemplateEngine(); 
    templateEngine.addDialect(new SpringSecurityDialect()); 
    templateEngine.addDialect(new LayoutDialect(new GroupingStrategy())); 
    templateEngine.setTemplateResolver(templateResolver()); 

    return templateEngine; 
} 

@Bean 
public ViewResolver viewResolver() { 

    ThymeleafViewResolver viewResolver = new ThymeleafViewResolver(); 
    viewResolver.setTemplateEngine(templateEngine()); 
    viewResolver.setCharacterEncoding("UTF-8"); 
    viewResolver.setCache(false); 
    viewResolver.setOrder(1); 

    return viewResolver; 
} 

OS(CentOSの7)デフォルトのエンコーディングはUTF-8であり、すべての生成されたファイルは、UTF-8 encondingを取得します。それでも文字を正しく表示できないようです。私はここで見つけたたくさんの提案を無駄にしようとしました。

Spring Securityの設定で、CsrfFilterの前にCharacterEncodingFilterを設定することもお勧めします。また、アプリはのデータを変えずに保存しています。

マイsecuritu構成で始まる:

@Override 
protected void configure(HttpSecurity http) throws Exception { 

    CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter(); 
    encodingFilter.setEncoding("UTF-8"); 
    encodingFilter.setForceEncoding(true); 

    http.addFilterBefore(encodingFilter,CsrfFilter.class); 
    // more security configs 
} 

私は何をしないのですか?

+0

あなたのテンプレートに ''がありますか? – Ilya

+0

私のすべてのテンプレートの ''セクションには、 ' '。 – gtludwig

答えて

1

messages_pt_BR.propertiesファイルは、他のアプリケーションとは異なるエンコードを持っていました...それはISO-8859-1と一緒に行くことに決めました。なぜ私はビート!

+0

私は 'Spring Boot 4'に' Thymeleaf 2.1.5'と同じ問題があり、すべてのファイルは 'UTF-8'で' messages_pt_BR.properties'は 'ISO-8859-1'で行く –

+0

すべての内容をコピーしますクリップボードに保存し、ファイルシステムからファイルを削除し、新しいファイルを作成して、必要なエンコーディングを確保します。新しく作成されたファイルに内容を貼り付け、タイプミスを確認します。それはうまくいくはずです! – gtludwig

+0

Tks @gtludwig、これを行う:http://stackoverflow.com/questions/31143923/eclipse-wrong-java-properties-utf-8-encoding?answertab=active#tab-top –