1、问题排查
在整合SpringBoot与Httl模板引擎的时候,博主曾遇到过这样的问题:通过浏览器访问一个Controller方法时,返回httl视图,但页面报404错误。
通过断点调试,访问url时,能进入到我们自定义的接口方法,所以此处可以断定该404错误是由视图解析器无法渲染返回的view所造成的。
继续往下调式,当到了DispatcherServlet的resolveViewName方法的时候,我们可以看到我们所配置的HttlViewResolver排在了InternalResourceViewResolver的后面,而对于Spring Mvc来说,视图解析器便是从viewResolvers链中按顺序一个一个往下找,直到找到一个能解析该视图的并不返回null的视图解析器为止。但是对于解析器InternalResourceViewResolver来说,不管能不能解析它都不会返回null,也就是说它拦截了所有的逻辑视图, 让后续的解析器得不到执行,所以正常情况下InternalResourceViewResolver必须放在最后。
不出所料,最终被选中的就是InternalResourceViewResolver视图,也就是说,我们所配置的HttlViewResolver视图被拦截了,所以报了404错误。
2、问题解决
既然找到了问题所在,那自然就好办了,将HttlViewResolver的order置为1(默认该order的值是整形数的最大值,该值越小排序越前),问题解决。
进一步调式,发现代码修改之后HttlViewResolver就排在第一位了