【问题标题】:Getting request Accept-Header from Spring or Thymeleaf从 Spring 或 Thymeleaf 获取请求 Accept-Header
【发布时间】:2021-07-06 11:55:29
【问题描述】:

这里是 Spring Boot/Thymeleaf。试图让国际化与我的电子邮件模板一起工作并遇到麻烦。

在我的配置中,我指定了以下 bean:

@Configuration
public class ThymeleafConfig {

    @Autowired
    public void configureTemplateEngine(TemplateEngine templateEngine, ITemplateResolver templateResolver) {
        templateEngine.addTemplateResolver(templateResolver);
    }

    @Bean
    public ITemplateResolver templateResolver() {

        ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();

        templateResolver.setOrder(Integer.valueOf(2));
        templateResolver.setResolvablePatterns(Collections.singleton("html/*"));
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode(TemplateMode.HTML);
        templateResolver.setCharacterEncoding("UTF-8");
        templateResolver.setCacheable(false);

        return templateResolver;

    }

    @Bean
    public LocaleResolver localeResolver() {

        AcceptHeaderLocaleResolver acceptHeaderResolver = new AcceptHeaderLocaleResolver();
        acceptHeaderResolver.setDefaultLocale(Locale.US);
        return acceptHeaderResolver;

    }

}

所以我们使用Accept-Header 中指定的语言环境(如果未指定,则默认为美国),这正是我想要的。

但是在发送前创建电子邮件对象时:

final MimeMessage mimeMessage = this.mailSender.createMimeMessage();
final MimeMessageHelper message =
    new MimeMessageHelper(mimeMessage, true, "UTF-8");
message.setSubject("This is my email");
message.setFrom("thymeleaf@example.com");
message.setTo(recipientEmail);

我也希望能够将电子邮件主题国际化。我可以使用标准的 Java 国际化资源包,但这需要我根据请求上的 Accept-Header 指定 Locale...那么我该如何动态访问它?

我想我可以在我的控制器/资源类中获取@RequestHeader("Accept"),然后将其传递给发送电子邮件的方法,但我想知道 Spring/Thymlead 是否提供更简洁的方式来访问该值?

【问题讨论】:

    标签: java spring-boot internationalization thymeleaf


    【解决方案1】:

    您可以使用LocaleContextHolder.getLocale() 根据您的Accept-Header 获取在当前线程上定义的语言环境。

    更多信息LocaleContextHolder

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-16
      相关资源
      最近更新 更多