为什么HTML显示为String

时间:2015-10-30 10:51:29

标签: html grails

我有一个结果列表

[[<a onclick="viewEmpDetails('563291f0af6a1ecb740f904c','false','UniqueId')" title='View' style='cursor:pointer'><i class='ace-icon fa fa-search-plus grey' style='width:30px;'> </i></a>, 02/02/49, 02/02/49, 02/02/1949, 11-Jan-1916, 10-Feb-33]]

我正在使用下面的代码来迭代

<g:each in="${session.treeGridJsonObject}"  var="lists">
  <g:each in="${lists}"  var="list">
  <td>${list}</td>
  </g:each>
</g:each>   

但是我在GSP中将html代码作为字符串。enter image description here

我如何在控制器中添加html数据

htmlData += "<a onclick=\"viewEmpDetails('"+row['UniqueId']+"','false','UniqueId')\" title='View' style='cursor:pointer'><i class='ace-icon fa fa-search-plus grey' style='width:30px;'> </i></a>"

当我尝试调试它时显示双引号。

enter image description here

1 个答案:

答案 0 :(得分:7)

这是为了防止XSS attacks。这样,如果用户提交了一些javascript,则在向其他人显示时不会运行。有多种方法可以输出原始数据:

${raw(content)}

${content.encodeAsRaw()}

<g:encodeAs codec="Raw">${content}</g:encodeAs>

<g:encodeAs codec="None">${content}</g:encodeAs>

请参阅http://mrhaki.blogspot.nl/2013/11/grails-goodness-generating-raw-output.html