groovy - Grails: ¿Cómo hacer todo lo que creo Upper Case?
uppercase linkfieldvalue (4)
Actualmente estoy usando CSS para cambiar todo lo que escribo en upperCase cuando creo una entrada, pero eso no es suficiente. Cuando guardo cosas, el texto que se muestra en los campos de texto es mayúscula, pero el valor real que almacena Grails permanece en minúscula.
Estoy asumiendo que necesitaría cambiar algo en el controlador o algo así.
Tal vez la transformación de $ fieldValue CSS podría funcionar?
¡Cualquier idea ayudaría!
¡Gracias!
¿Podrías escribir setters para tu objeto de dominio?
class Domain {
String aField
void setAField( String s ){
aField = s?.toUpperCase()
}
}
Creo que estás preguntando cómo cambiar los valores en los objetos de tu dominio a mayúsculas. Si este no es el caso, aclare la pregunta.
Tienes un montón de opciones. yo recomendaria
1) En un método de servicio, antes de guardar, usando String.toUpperCase () para modificar los valores apropiados en el objeto de dominio.
o
2) Puede utilizar los interceptores Hibernate subyacentes definiendo un método beforeInsert en su objeto de dominio y haciendo toUpperCase allí. (ver 5.5.1 de la documentación de Grails)
o
3) Podrías hacer este lado del cliente. Sin embargo, si es un "requisito de negocios" que los valores se almacenen como superiores, entonces recomiendo hacer el lado del servidor de traducción. Es más fácil ajustar pruebas alrededor de ese código ...
Puede usar la metaprogramación de Groovy para cambiar el setter para todas las propiedades de tipo String de clase de dominio sin escribir un setter personalizado para cada propiedad.
Para hacer esto, agregue algo como lo siguiente al cierre de init
de Bootstrap.groovy
def init = { servletContext ->
for (dc in grailsApplication.domainClasses) {
dc.class.metaClass.setProperty = { String name, value ->
def metaProperty = delegate.class.metaClass.getMetaProperty(name)
if (metaProperty) {
// change the property value to uppercase if it''s a String property
if (value && metaProperty.type == String) {
value = value.toUpperCase()
}
metaProperty.setProperty(delegate, value)
} else {
throw new MissingPropertyException(name, delegate.class)
}
}
}
}
Usar anotaciones es el enfoque más limpio
import org.grails.databinding.BindingFormat
class Person {
@BindingFormat(''UPPERCASE'')
String someUpperCaseString
@BindingFormat(''LOWERCASE'')
String someLowerCaseString
}
Aquí hay un enlace: Grails doc for data binding