domingo, 31 de mayo de 2009

nl2br en grails

PHP cuenta con una función para convertir saltos de línea "/n" de una cadena en etiquetas <br> html

Grails no cuenta con una función similar para formatear estas cadenas, que se almacenan desde un simple textArea pero deseamos que mantengan su "formato" al mostrarlas nuevamente.

Una sencilla solución en grails puede ser la siguiente:

1. Crear nuestor propio codificador
2. Llamarlo directamente desde la .gsp

Para crear un codificador, basta con crear en la carpeta grails-app/utils/ una clase así:

NL2BRCodec.groovy (Es importante que el nombre del archivo tenga el sufijo 'Codec')

class NL2BRCodec{
static encode = { string ->
string.trim().replaceAll("\n","<br>")
}
}

Y eso es todo, ahora desde la gsp, lo único que tenemos que hacer es llamar el nuevo codificador así:

<g:encodeAs codec="NL2BR">${objeto.valor}</g:encodeAs>

O así:

${objeto.valor.encodeAsNL2BR()}

nl2br in grails, english version

PHP has one function that converts String's breaklines "/n" into <br> html tags.

Grails doesn't have a similar function to format Strings this way, but we can make our own Grail's codec, in order to obtain the same result as in PHP:

1. Create your own codec
2. Call it directly from the GSP page

1. To create the new codec, you just need to create a Grail's class in the folder grails-app/utils/ , like this:

NL2BRCodec.groovy (The file has to be named with the 'Codec' sufix)

class NL2BRCodec{
static encode = { string ->
string.trim().replaceAll("\n","<br>")
}
}

That's all, now, from the GSP page, you just have to call the codec like this:

<g:encodeAs codec="NL2BR">${object.stringValue}</g:encodeAs>

Or:

${object.stringValue.encodeAsNL2BR()}