当用字符串替换时,Gsp页面保留html标签

时间:2013-12-05 07:50:58

标签: grails grails-2.3

我正在使用grails 2.3

<td>${params?.query?name.replace(params.query,'<span>'+params.query+'</span>'):name}</td>

在上面的gsp页面声明中,如果params.query值可用,我想突出显示name属性。但生成的代码包含html等效字符。

<td>&lt;span&gt;Mess&lt;/span&gt;age</td>

如何在gsp页面中显示如下所示。在1.3版本中它起作用。但在2.3版本中,相同的代码如上所示。我希望将其显示为,

<span>message</span>

3 个答案:

答案 0 :(得分:2)

您可能在Config.groovy中有此设置:

grails.views.default.codec = "html"

这意味着在GSP中的所有$ {}表达式中,特殊的HTML字符如&#39;&lt;&#39;和&#39;&gt;&#39;将被编码。一般来说,这是一个合理的设置,因为它可以防止XSS攻击。

如果您需要避免某个特定表达式的此默认行为,可以使用:

<td><%=params?.query?name.replace(params.query,'<span>'+params.query+'</span>'):name%></td>

答案 1 :(得分:0)

我认为您可以在Config.groovy

中配置

尝试以下设置

grails.views.default.codec = "html" 

答案 2 :(得分:0)

你可以写:

<td>
<g:if test="${params?.query}">
    <span>${params.query}</span>
</g:if>
<g:else>
    ${name}
</g:else>
</td>