Groovy无法对ashtml()进行编码

Groovy无法对ashtml()进行编码,html,grails,groovy,textarea,Html,Grails,Groovy,Textarea,我正在使用Grails2.4.3。当我将数据输入到textarea时,使用新行并保存到db。之后,我将其加载到视图中,用break替换新行。但是,它显示的是,而不是break 下面是我使用的代码: ${book.introduction.encodeAsHtml().replace(/\r\n|\r|\n/g,"<br />")} ${book.introduction.encodeAsHtml().replace(/\r\n |\r |\n/g,“”)} 默认情况下,新的XSS预

我正在使用Grails2.4.3。当我将数据输入到textarea时,使用新行并保存到db。之后,我将其加载到视图中,用break替换新行。但是,它显示的是

,而不是break

下面是我使用的代码:

${book.introduction.encodeAsHtml().replace(/\r\n|\r|\n/g,"<br />")}
${book.introduction.encodeAsHtml().replace(/\r\n |\r |\n/g,“
”)}
默认情况下,新的XSS预防将所有
${}
字符串编码为HTML,因此您的最终产品将被编码

您可以将整个输出包装在
raw
中,以避免这种情况:

${raw( book.introduction.encodeAsHtml().replace(/\r\n|\r|\n/g,"<br />") )}
${raw(book.introduction.encodeAsHtml().replace(/\r\n |\r |\n/g,“
”))

有关更多详细信息,请参阅。值得考虑的是,您正在渲染什么,以及XSS是否会成为您的问题。

只要您信任输出,有多种方法可以做到这一点:

另一个答案表明:

${raw(book.introduction.encodeAsHtml().replace(/\r\n|\r|\n/g,"<br />"))}
使用Grails的标记库:

<g:encodeAs code="Raw">${book.introduction.encodeAsHtml().replace(/\r\n|\r|\n/g,"<br />")}</g:encodeAs>
<g:encodeAs code="None">${book.introduction.encodeAsHtml().replace(/\r\n|\r|\n/g,"<br />")}</g:encodeAs>
${book.introduction.encodeAsHtml().replace(/\r\n |\r |\n/g,“
”)} ${book.introduction.encodeAsHtml().replace(/\r\n |\r |\n/g,“
”)}
<g:encodeAs code="Raw">${book.introduction.encodeAsHtml().replace(/\r\n|\r|\n/g,"<br />")}</g:encodeAs>
<g:encodeAs code="None">${book.introduction.encodeAsHtml().replace(/\r\n|\r|\n/g,"<br />")}</g:encodeAs>