SpringBoot配置模板引擎之视图解析器失效问题排查

  1、问题排查

    在整合SpringBoot与Httl模板引擎的时候,博主曾遇到过这样的问题:通过浏览器访问一个Controller方法时,返回httl视图,但页面报404错误。

    通过断点调试,访问url时,能进入到我们自定义的接口方法,所以此处可以断定该404错误是由视图解析器无法渲染返回的view所造成的。

    SpringBoot配置模板引擎之视图解析器失效问题排查_第1张图片

    

    继续往下调式,当到了DispatcherServlet的resolveViewName方法的时候,我们可以看到我们所配置的HttlViewResolver排在了InternalResourceViewResolver的后面,而对于Spring Mvc来说,视图解析器便是从viewResolvers链中按顺序一个一个往下找,直到找到一个能解析该视图的并不返回null的视图解析器为止。但是对于解析器InternalResourceViewResolver来说,不管能不能解析它都不会返回null,也就是说它拦截了所有的逻辑视图, 让后续的解析器得不到执行,所以正常情况下InternalResourceViewResolver必须放在最后。

      SpringBoot配置模板引擎之视图解析器失效问题排查_第2张图片


    不出所料,最终被选中的就是InternalResourceViewResolver视图,也就是说,我们所配置的HttlViewResolver视图被拦截了,所以报了404错误。

    SpringBoot配置模板引擎之视图解析器失效问题排查_第3张图片

  

2、问题解决

    既然找到了问题所在,那自然就好办了,将HttlViewResolver的order置为1(默认该order的值是整形数的最大值,该值越小排序越前),问题解决。

SpringBoot配置模板引擎之视图解析器失效问题排查_第4张图片

    进一步调式,发现代码修改之后HttlViewResolver就排在第一位了

    SpringBoot配置模板引擎之视图解析器失效问题排查_第5张图片

你可能感兴趣的:(视图解析器失效,java,ee开发中遇到的问题)