Spring Boot 切换thymeleaf3

今天在看视频学习spring boot时遇到一点问题,视频时间稍微有点早,而技术发展的又很快,就导致当时的设置现在好像不起作用,现在解决了。

教程教导模板引擎thymeleaf的使用,然而spring boot框架默认给我们设置的是thymeleaf2,这个版本太老了,需要切换到thymeleaf3,按照视频里的教程到官方文档翻了一下,没有找到,于是按照之前的方法,使用thymeleaf前在pom文件里引入如下依赖:

    
            org.springframework.boot
            spring-boot-starter-thymeleaf
        

切换版本:

    
        1.8
        3.0.0.RELEASE
        2.0.0
    

然后发现,这个方法可以正常运行不会报错,但是在使用时会报错:

报错如下

之后上了thymeleaf的官网看了一下,添加了下面两个依赖


  org.thymeleaf
  thymeleaf
  3.0.0.RELEASE


  org.thymeleaf
  thymeleaf-spring4
  3.0.0.RELEASE

同样的错误:

image

google了一下,这篇博文写比较详细

当没有声明ViewResolver时,spring会给你注册一个默认的ViewResolver,就是JstlView的实例, 该对象继承自InternalResoureView。

JstlView用来封装JSP或者同一Web应用中的其他资源,它将model对象作为request请求的属性值暴露出来, 并将该请求通过javax.servlet.RequestDispatcher转发到指定的URL.

Spring认为, 这个view的URL是可以用来指定同一web应用中特定资源的,是可以被RequestDispatcher转发的。

也就是说,在页面渲染(render)之前,Spring会试图使用RequestDispatcher来继续转发该请求。

所以问题就是thymeleaf没有正确引入,所以导致视图解析器不起作用。

最后试了一下引入这两个依赖,properties不需要更改,问题成功解决了:


    org.springframework.boot
    spring-boot-starter-thymeleaf



    org.thymeleaf
    thymeleaf-spring4
    3.0.0.RELEASE

你可能感兴趣的:(Spring Boot 切换thymeleaf3)