ThymeleafView:java.lang.IllegalArgumentException:属性'locale'是必需的

问题描述

我将按照以下教程逐步完成10号渲染模板片段。

https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html#rendering-template-fragments

我得到一个异常:嵌套异常是java.lang.IllegalArgumentException:属性'locale'是必需的。

我的代码在下面,有人可以告诉我如何解决它吗?非常感谢。

WebConfig.java

public class WebConfig implements WebMvcConfigurer {

@Autowired
private WebApplicationContext context;

@Bean
public ServletContextTemplateResolver templateResolver() {
    final ServletContextTemplateResolver resolver = new ServletContextTemplateResolver(context.getServletContext());
    resolver.setPrefix("/WEB-INF/views/");
    resolver.setSuffix(".html");
    resolver.setTemplateMode(TemplateMode.HTML);
    return resolver;
}

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

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

@Bean("messageSource")
public MessageSource messageSource() {
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasenames("lang/messages");
    messageSource.setdefaultencoding("UTF-8");
    return messageSource;
}

@Bean
public LocaleResolver localeResolver() {
    return new CookieLocaleResolver();
}

@Override
public void addInterceptors(InterceptorRegistry registry) {
    LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
    localeChangeInterceptor.setParamName("lang");
    registry.addInterceptor(localeChangeInterceptor);
}

@Bean(name = "content-part")
@Scope("prototype")
public ThymeleafView someViewBean() {
    ThymeleafView view = new ThymeleafView("index"); // templateName = 'index'
    view.setMarkupSelector("content");
    return view;
}

}

HomeController.java

public class HomeController {
@RequestMapping("/showContentPart")
public String showContentPart(final Locale locale,HttpServletRequest request,HttpServletResponse response) {
    return "content-part";
}

}

index.html https://i.stack.imgur.com/WOGpR.png

解决方法

尝试一下:

@RequestMapping(“ / showContentPart”)

公共类HomeController { public String showContentPart(最终语言环境,HttpServletRequest请求,HttpServletResponse响应){ 返回“内容部分”; }