在 Spring Boot 应用程序中将 Thymeleaf 从 3.0 升级到 3.2

问题描述 投票:0回答:1

尝试使用 Spring Boot 2.7 将 Spring thymeleaf 从 3.0 单独更新到 3.2。添加了以下依赖项。

<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
<version>3.1.2.RELEASE</version>

出现异常

 org.springframework.web.util.NestedServletException: Request processing failed; nested 
 exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate 
 [org.thymeleaf.spring5.view.ThymeleafView]: Unresolvable class definition; nested exception 
 is java.lang.NoClassDefFoundError: org/thymeleaf/web/IWebExchange
 at 
 com.framework.exception.ErrorAttributesTests.defaultHtmlValue(ErrorAttributesTests.java:62)

测试用例:

测试

@BeforeMethod
    public void setup() {
        mockMvc = MockMvcBuilders.standaloneSetup(new BasicErrorController(new ErrorAttributes(new ObjectMapper()), new ErrorProperties())).setViewResolvers(viewResolver()).build();
        //this.mockMvc = webAppContextSetup(this.wac).build();
    }

public void defaultHtmlValue() throws Exception {
    this.mockMvc.perform(get("/error").accept(MediaType.TEXT_HTML_VALUE)
            .requestAttr(RequestDispatcher.ERROR_EXCEPTION_TYPE, "bar")
            .requestAttr(RequestDispatcher.ERROR_STATUS_CODE, 400)
            .requestAttr(RequestDispatcher.ERROR_REQUEST_URI, "/notes"))
            .andDo(print()).andExpect(status().isBadRequest())
            .andExpect(content().contentType("text/html;charset=UTF-8"))
            .andExpect(content().string(Matchers.containsString("Something went wrong!")));
}

private ViewResolver viewResolver() {

    ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
    SpringTemplateEngine templateEngine = new SpringTemplateEngine();
            
    ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
    templateResolver.setPrefix("templates/");
    templateResolver.setCacheable(false);
    templateResolver.setSuffix(".html");
    templateResolver.setTemplateMode("HTML5");
    templateResolver.setCharacterEncoding("UTF-8");
    templateEngine.setTemplateResolver(templateResolver);
    viewResolver.setTemplateEngine(templateEngine);
    viewResolver.setCharacterEncoding("UTF-8");
    return viewResolver;
}

我需要将SpringBoot更新到3吗?

java spring spring-boot thymeleaf
1个回答
0
投票

如果您使用 Spring Boot,请添加

spring-boot-starter-thymeleaf

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

这将带来 thymeleaf 所需的所有依赖项。

© www.soinside.com 2019 - 2024. All rights reserved.