Перед рендерингом текстовой области обратно в GSP вы можете
- закодируйте вашу строку как HTML
- конвертировать символы новой строки в
<br/>
.
Этого можно достичь, сохранив следующую библиотеку тегов в grails-app / taglib:
class LinesTagLib {
def lines = { attrs, body ->
out << attrs['string'].encodeAsHTML().replace('\n', '<br/>\n')
}
}
Поскольку мы уже применили encodeAsHTML () в теге, вам придется отключить кодек HTML при использовании тега (используя <%=expression%>
вместо ${expression}
):
<g:lines string="<%=savedTextarea%>" />
Альтернативой будет написать собственный кодек для этого:
class HTMLLinesCodec{
static encode = { str ->
str.encodeAsHTML().replace('\n', '<br/>\n')
}
}
Затем вы можете использовать этот кодек для файлов GSP, где вы хотите, чтобы это поведение, добавив директиву:
<%@ defaultCodec="HTMLLines" %>