带有百里香叶转义字符的内联javascript
Posted
技术标签:
【中文标题】带有百里香叶转义字符的内联javascript【英文标题】:Inline javascript with thymeleaf escaping character 【发布时间】:2018-03-06 21:13:50 【问题描述】:我用百里香叶和春天。 我尝试做内联javascript。
<script th:inline="javascript">
$("#genericTable").bootstrapTable(
url: /*[[$url]]*/ 'generic',
...
);
在服务器端我做
model.addAttribute("url", "/rest/vehicles");
我明白了
网址:“\/rest\/vehicles”,
为什么要在字符串中添加一些字符?
编辑
与
url: /*[[@$url]]*/ 'generic',
第一个 / 就像被移除了,所以调用是无效的...
【问题讨论】:
对不起,我不明白:你得到了哪些额外的字符? 我更新了,添加了\字符 J 认为这是因为它对 / 进行了转义。这就是 URL 有特殊语法的原因。看这里,有一个关于 URL 重写的部分。 thymeleaf.org/doc/articles/standardurlsyntax.html 您是否尝试在 Javascript 注释之外生成它?例如,直接在 HTML 中作为文本(当然使用 @)。万一你得到什么? 如果我只使用:@$url 什么都不会生成 【参考方案1】:[(...)]
应该有帮助
我面临的问题示例:
$.getJSON('[[@/management/users/search/unit/]]' + value, function(data)
转化为:
$.getJSON('"\/management\/users\/search\/unit\/"' + value, function(data)
使用[(...)]
:
$.getJSON('[(@/management/users/search/unit/)]' + value, function(data)
转化为:
$.getJSON('/management/users/search/unit/' + value, function(data)
来自Thymeleaf 3.0 docs
请注意,虽然 [[...]] 对应于 th:text(即结果将被 HTML 转义),但 [(...)] 对应于 th:utext 并且不会执行任何 HTML 转义。
【讨论】:
【参考方案2】:你可以试试这样的:
<script type="text/javascript" th:inline="javascript">
/*<![CDATA[*/
$("#genericTable").bootstrapTable(
url: /*[[$url]]*/ 'generic',
...
);
/*]]>*/
</script>
【讨论】:
请注意,这个答案是从 2017 年 9 月开始的,这些年来情况可能已经发生了变化......【参考方案3】:我知道这个问题有点老了,但答案并没有纠正问题,或者我遇到的问题一样。要删除转义,我建议编写这样的代码(双引号仅用于 javascript 目的):
<script type="text/javascript" th:inline="javascript">
/*<![CDATA[*/
$("#genericTable").bootstrapTable(
url: "[(@ $url )]",
...
);
/*]]>*/
</script>
【讨论】:
以上是关于带有百里香叶转义字符的内联javascript的主要内容,如果未能解决你的问题,请参考以下文章
带有模型和百里香叶的 Spring Boot Ajax 发布表单提交