如何在thymelaf和javascript代码中转义单引号

how to escape single quote in thymeleaf and javascript code

本文关键字:代码 转义 单引号 javascript thymelaf      更新时间:2023-09-26

我需要使用javascript更新html DOM,方法是插入一个链接,当用户单击Thymelaf模板中的链接时,该链接将调用javascript函数。

$.ajax({
  type: "GET",
  beforeSend: function(xhrObj){
    xhrObj.setRequestHeader("Content-Type","application/json");
    xhrObj.setRequestHeader("Accept","application/json");
  },
  url: "/users/list",
  dataType:"json",
  success: function( data,  textStatus,  jqXHR){
        var table = $("#userlist").children();
        for(i in data){
            table.append("<tr><td><a onclick='user_see("+data[i].userId+")' th:href='#'>"+data[i].userId+"</a></td><td>"+data[i].firstName+"</td><td>"+data[i].lastName+"
            }
   }
});

事实证明,Thymelaf用双引号取代了单引号。我曾尝试用"''"来转义单引号,但当页面加载时,我只会出现Thymelaf解析错误

2014年10月30日星期四17:55:21 EAT出现意外错误(类型=内部服务器错误,状态=500)。异常解析文档:template="users/list",

我怎样才能避开单引号?

最安全的方法不是将HTML附加为字符串,而是使用DOM API。它更冗长,但避免了引用问题:

 data.forEach(function(datum) {
    var tr = document.createElement('tr');
    var td = document.createElement('td');
    var a = document.createElement('a');
    a.onclick = function() { user_see(datum.userId); };
    a.setAttribute('th:href', '#');
    a.innerHTML = datum.userId;
    tr.appendChild(td);
    td = document.createElement('td');
    td.innerHTML = datum.firstName;
    tr.appendChild(td);
    td = document.createElement('td');
    td.innerHTML = datum.lastName;
    tr.appendChild(td);
    table.appendChild(tr);
}