2014-07-10 51 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,我不認爲這就是她想要做的,我認爲她正在試圖取代換行符。 –