最近在写后台管理系统时,遇到了一个很诡异的Bug,时而有时而没有。在修改页面点击修改按钮,按道理应该正常运行,但是却404了,而且这个问题时间歇性的,有时候会出现404,有时候就会正常运行。一切的罪魁祸首都是Thymeleaf的缓存机制。
以下举例:
HTML中部分代码:
<a th:href="@{/order-list(pageNum=${pageNum})}">
修改
</a>
正常运行时的请求路径:
localhost:8080/order-list?pageNum=XXX
运行出错时:
localhost:8080/XXXXXXXXXXX // 只要知道不是正确的请求路径即可
结论:
从代码层面来看,是并没有出错的,有正常运行的情况也证明了代码并没有问题,那么又是为什么会出现404的情况呢。
其实是因为,当跳转到修改页面的时候,其实Thymeleaf其实并没有完全渲染完数据,我们就去点击了这个超链接,那么此时就不会跳转到我们想要的请求路径。这是由于Thymeleaf的缓存机制导致的。
解决方案:
1、把超链接跳转,改成js的形式,这样就不会出问题
2、当然你也可以稍微等一下,再去点击目标超链接哈哈哈(非常不建议)
版权声明:本文为m0_51512780原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。