我正在使用CSS在创建条目时更改我写入upperCase的所有内容,但这还不够。保存时,文本字段中显示的文本为大写,但Grails存储的实际值保持小写。
我假设我需要更改控制器或其他任何内容。
也许转换$ fieldValue CSS可以工作吗?
任何想法都会有所帮助!
Thnks!
答案 0 :(得分:19)
您可以为域对象编写setter吗?
class Domain {
String aField
void setAField( String s ){
aField = s?.toUpperCase()
}
}
答案 1 :(得分:4)
我认为您在询问如何将域对象的值更改为大写。如果情况并非如此,请澄清问题。
你有很多选择。我会推荐
1)在服务方法中,在保存之前,使用String.toUpperCase()修改域对象上的相应值。
或
2)您可以通过在域对象上定义beforeInsert方法并在那里执行toUpperCase来使用底层Hibernate拦截器。 (参见grails文档的5.5.1)
或
3)你可以做这个客户端。但是,如果值是“业务要求”,则值存储为上层,那么我建议执行翻译服务器端。围绕该代码包装测试更容易....
答案 2 :(得分:2)
使用注释是最简洁的方法
import org.grails.databinding.BindingFormat
class Person {
@BindingFormat('UPPERCASE')
String someUpperCaseString
@BindingFormat('LOWERCASE')
String someLowerCaseString
}
答案 3 :(得分:1)
您可以使用Groovy元编程来更改所有域类String类型属性的setter,而无需为每个属性实际编写自定义setter。
要执行此操作,请将以下内容添加到init
的{{1}}关闭
Bootstrap.groovy