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>
4

3 回答 3

2

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

grails.views.default.codec = "html"

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

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

<td><%=params?.query?name.replace(params.query,'<span>'+params.query+'</span>'):name%></td>
于 2013-12-05T11:55:14.340 回答
0

我认为这是你可以配置的东西Config.groovy

尝试以下设置

grails.views.default.codec = "html" 
于 2013-12-05T08:01:05.733 回答
0

你可以写:

<td>
<g:if test="${params?.query}">
    <span>${params.query}</span>
</g:if>
<g:else>
    ${name}
</g:else>
</td>
于 2013-12-05T08:36:55.837 回答