2014-07-10 49 views
2

我对此很生气,我需要在grails 2.3.7中显示一个textarea文本,但是当我替换br /的\ r \ n字符并执行encodeAsHTML( )我得到了br的每一个地方,而不是新的线。在grails中显示多行文字页面

它是如何完成的?这是我试过的:

${cotizacionInstance.descripcion.encodeAsHTML().replaceAll('\r\n', '<br/>')} 

${cotizacionInstance.descripcion.replaceAll('\r\n', '<br/>').encodeAsHTML()} 

<%=cotizacionInstance.descripcion.replaceAll('\r\n', '<br/>').encodeAsHTML()%> 

<%=cotizacionInstance.descripcion.encodeAsHTML().replaceAll('\r\n', '<br/>')%> 

<%=cotizacionInstance.descripcion.replaceAll('\r\n', '<br/>').decodeHTML()%> 

<%=cotizacionInstance.descripcion.decodeHTML().replaceAll('\r\n', '<br/>')%> 

我不喜欢它使用pre标签的方式,因为我放弃了所有的响应。

我看到在谷歌铬检查器中,我得到我的双引号之间的字符串,但我不知道如何删除这些。

感谢

回答

5

有冷落你的描述的因素使其无法肯定地说,但让你追求的是对文本为原料标注的是这样的行为的一种方式......

${raw(cotizacionInstance.descripcion.replaceAll('\r\n', '<br/>'))} 

我希望有所帮助。

+0

更多信息,可以在http://grails.org/doc/latest/guide/security.html#xssPrevention找到。 –

+0

确保您了解所有这些工作。如果'cotizacionInstance.descripcion'的值可能包含恶意标记,并且将其标记为raw,则该值中的任何值都将被非转义化。根据你的应用程序,也许这是好的,但它是谨慎的事情。 –

+1

这是我需要的感谢!,我将在替换之前使用encodeAsHTML,因此恶意标记不会伤害到我;) –

0

您需要esacpe您的反斜杠:

有关
replaceAll("\\n", "<br/>") 
+0

replaceAll正在工作问题是我看到
而不是换新行 –

+0

这只有在她试图替换字面反斜杠时才有意义其次是n,我不认为这就是她想要做的,我认为她正在试图取代换行符。 –