Cuando utilizamos un tag como
podemos usar un atributo optionKey y un atributo optionValue.
El atributo optionValue lo utilizamos para decidir qué campo es el que deseamos mostrar, por ejemplo:
Pero ¿Qué pasa si deseamos que en la lista de select, sea visible más de un atributo, o si deseamos procesar los valores antes de mostrarlos?
Una solución, puede ser la siguiente:
En el ejemplo anterior, ponemos el atributo nombre en mayúsculas, y le agregamos a la cadena, el atributo 'autor'. Nótese que se utiliza doble llave ${{}}
Happy Grails ;)
martes, 13 de octubre de 2009
jueves, 24 de septiembre de 2009
Uso alternativo al método estático findAllBy, para filtrar por más de dos criterios
El método estático findAllBy de grails, solo permite hacer consultas teniendo en cuenta máximo dos valores, así:
def listaDeObjetos = Clase.findAllByPropiedad1AndPropiedad2("valor1","valor2")
Si se quiere hacer un filtrado por más de dos propiedades, puede hacerse utilizando el método findAllWhere, así:
def listaObjetos = Clase.findAllWhere(['propiedad1':'valor1', 'propiedad2':'valor2', 'propiedad3':OtraClase.get('valor3'), 'propiedad4':'valor4'])
def listaDeObjetos = Clase.findAllByPropiedad1AndPropiedad2("valor1","valor2")
Si se quiere hacer un filtrado por más de dos propiedades, puede hacerse utilizando el método findAllWhere, así:
def listaObjetos = Clase.findAllWhere(['propiedad1':'valor1', 'propiedad2':'valor2', 'propiedad3':OtraClase.get('valor3'), 'propiedad4':'valor4'])
miércoles, 23 de septiembre de 2009
Pasar parámetro update de una remoteFunction vía Javascript
Si se tiene una función de javascript así:
function nombreFuncion(algunId){
${remoteFunction(action:'action',controller:'controller',update:"div_'+algunId+'")}
}
Donde div_[algunId] es el id del html div que se desea actualizar al finalizar la petición.
Recuerde usar las comillas así:
update:"div_'+algunId+'"
function nombreFuncion(algunId){
${remoteFunction(action:'action',controller:'controller',update:"div_'+algunId+'")}
}
Donde div_[algunId] es el id del html div que se desea actualizar al finalizar la petición.
Recuerde usar las comillas así:
update:"div_'+algunId+'"
lunes, 7 de septiembre de 2009
Ordenar un arreglo de arreglos, o de objetos
Si se tiene una clase
Usuario:
+id
+nombre
+nick
Y luego, se tiene un arreglo de objetos [Usuario] 'usuarios'
Este arreglo, puede ordenarse así:
usuarios = usuarios.sort{ it.nombre }
Si se trata de un arreglo de arreglos, puede ordenarse así:
listaArreglos = listaArreglos.sort{ it[0] }
Usuario:
+id
+nombre
+nick
Y luego, se tiene un arreglo de objetos [Usuario] 'usuarios'
Este arreglo, puede ordenarse así:
usuarios = usuarios.sort{ it.nombre }
Si se trata de un arreglo de arreglos, puede ordenarse así:
listaArreglos = listaArreglos.sort{ it[0] }
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')
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()}
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í:
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)
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()}
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:
Or:
${object.stringValue.encodeAsNL2BR()}
Suscribirse a:
Entradas (Atom)