环境:Grails 2.0.4,Java 1.6.0
我想对需要整数值的域对象值进行约束,以防止输入十进制值.在视图中输入3.3会导致正在创建的对象值为3.我希望验证错误将被踢回用户,指示只有整数值有效.
class ADomainObject {
Integer anInteger
}
Run Code Online (Sandbox Code Playgroud)
调节器
def save() {
// Note: params["anInteger"] = "3.3"
ADomainObject aDomainObject = new ADomainObject(params)
aDomainObject.save flush:true
}
Run Code Online (Sandbox Code Playgroud)
导致aDomainObject.anInteger = 3的持久性
导致失败需要什么类型的约束?我尝试使用范围约束,[0..1000]无济于事.
您可以注册自定义属性编辑器,Integers以仅允许严格的整数值.以下内容适用于绑定所有Integers.
class IntegerEditor extends java.beans.PropertyEditorSupport {
void setAsText(String text) {
value = Integer.parseInt(text)
}
}
class CustomPropertyEditorRegistrar implements org.springframework.beans.PropertyEditorRegistrar {
void registerCustomEditors(org.springframework.beans.PropertyEditorRegistry registry) {
registry.registerCustomEditor(Integer, new IntegerEditor())
}
}
Run Code Online (Sandbox Code Playgroud)
然后在resources.groovy:
beans = {
customPropertyEditorRegistrar(CustomPropertyEditorRegistrar)
}
Run Code Online (Sandbox Code Playgroud)