最近在写折腾李仁密老师个人博客的时候遇到的坑点分享一下
在写动态替换评论模块的js的时候发现load请求一直没有发送
```
$(function () {
$("#comment-container").load(/*[[@{/comments/{id}(id=${blog.id})}]]*/"comments/2");
});
```
于是就疯狂测试找问题,但是始终没有找到问题的重心,在测试的时候,发现
单独发送该url的时候是能够发送正常的“/comments/2",这说明
/*[[@{/comments/{id}(id=${blog.id})}]]*/这句thymeleaf语法没有生效
如果对thymeleaf语法熟悉的人应该能立刻想到这可能是没有引用script 中的某个标签所导致的问题
但是我当时百度的时候并没有人准确提到下面句语法失效的具体原因
/*[[@{/comments/{id}(id=${blog.id})}]]*/
就连thymeleaf官方文档也没有类似用法,没办法了只能撸起袖子加油找bug(面向bug编程)
从thymeleaf依赖,到去shiro查看是否有依赖冲突,查看配置,修改springboot版本,
尝试各种拼接url的js语句,基本上都是无用功,中途还遇到了更多bug
这件事给我最大的启发是,遇到问题一定要抓住问题的核心,遇到这种没有异常信息的bug,
要抓住问题的关键点去百度,如果问题找对了方向解决的会非常高效
其实我这个bug总结出来就是:thymeleaf的js语法失效的问题,用该问题去百度后很快找到了答案
:
/*[[@{}]]*/是thymeleaf中的内联语法,关于内联,我的理解是在js里想要动态获取值的一种语法,
在js中使用thymeleaf的内联语法需要在script标签中引用th:inline="javascript",也就是
<script th:inline="javascript">
加上该标签就解决了问题
博主是在博客中找到了答案:https://bbs.csdn.net/topics/392263835?list=71478264
希望能帮助到大家