Grails 如何伪造验证错误?
我正在使用插件。以下是我正在处理的域对象:Grails 如何伪造验证错误?,grails,spring-webflow,grails-domain-class,Grails,Spring Webflow,Grails Domain Class,我正在使用插件。以下是我正在处理的域对象: class Foo implements Serializable { String fooProp1, fooProp2 static constraints = { fooProp2 nullable: false } } class Bar implements Serializable { Foo fooObject static constraints = {
class Foo implements Serializable {
String fooProp1,
fooProp2
static constraints = {
fooProp2 nullable: false
}
}
class Bar implements Serializable {
Foo fooObject
static constraints = {
fooObject nullable: false
}
}
在webflow中的某一点上,我需要确保fooObject.fooProp1不为null。如果是,我想抛出一个错误并强制用户提供一个值。我尝试使用validate()来实现这一点(在Bar和Foo对象上),但由于fooProp1具有nullable:true属性,因此它通过了验证。有什么想法吗?您可以通过修改以下代码在Web流中实现这一点:
if(fooObject.fooProp1 == null) {
fooObject.errors.rejectValue('fooProp1', 'nullable')
}
该方法的第二个参数,'nullable'
,可能与您的情况不同。您只需将其设置为消息代码(来自message.properties)即可显示所需的错误消息
查看更多使用
reject()
和rejectValue()
的方法,我有点困惑-如果是这种情况,属性不应该是可空的:false
?您能否澄清为什么不能将约束添加到域中?我想这是对我来说最明显的解决方案。嗯,在不指定fooProp1的情况下,Foo对象可以存在于数据库中。但是,在webflow过程中,此属性不需要为null,因为它在webflow过程结束时使用。谢谢,这正是我想要的。