内联javascript与百里香叶逃脱字符

时间:2017-09-25 19:44:27

标签: spring thymeleaf

我使用百里香和弹簧。 我尝试使用内联javascript。

<script th:inline="javascript">

    $("#genericTable").bootstrapTable({
        url: /*[[${url}]]*/ 'generic',
        ...
     });    

在服务器端我做

 model.addAttribute("url", "/rest/vehicles");

我得到了

  

url:“\ / rest \ / vehicles”,

为什么有些字符被添加到字符串中?

修改

url: /*[[@{${url}}]]*/ 'generic',

首先/就像被删除一样,所以调用它是无效的......

3 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

<script type="text/javascript" th:inline="javascript">
  /*<![CDATA[*/
    $("#genericTable").bootstrapTable({
        url: /*[[${url}]]*/ 'generic',
        ...
    });  
  /*]]>*/
</script>

答案 1 :(得分:0)

[(...)]应该有帮助

我面临的问题示例:

$.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 :(得分:0)

我知道这个问题有点老了,但答案并没有解决问题,或者我遇到的问题。要删除转义,我建议编写这样的代码(双引号仅用于 javascript 目的):

<script type="text/javascript" th:inline="javascript">
  /*<![CDATA[*/
    $("#genericTable").bootstrapTable({
        url: "[(@{ ${url} })]",
        ...
    });  
  /*]]>*/
</script>