我尝试在命令对象上验证嵌套域类实例。
拥有以下命令对象
package demo
import grails.databinding.BindingFormat
class SaveEventCommand {
@BindingFormat('yyyy-MM-dd')
Date date
Refreshment refreshment
static constraints = {
date validator: { date -> date > new Date() + 3}
refreshment nullable: true
}
}
让以下域类具有自己的约束
package demo
class Refreshment {
String food
String drink
Integer quantity
static constraints = {
food inList: ['food1', 'food2', 'food3']
drink nullable: true, inList: ['drink1', 'drink2', 'drink3']
quantity: min: 1
}
}
我需要当refreshment不可为空时,命令对象验证date属性并检查refreshment实例中的相应限制
现在尝试在控制器中使用此代码:
def save(SaveEventCommand command) {
if (command.hasErrors() || !command.refreshment.validate()) {
respond ([errors: command.errors], view: 'create')
return
}
// Store logic goes here
}
这里通过!command.refreshment.validate()
我尝试验证刷新实例,但是我得到的结果是没有错误,即使传递的数据不正确。
感谢任何指导,感谢您的时间
答案 0 :(得分:0)
我能想到的两件事:
grails.validation.Validateable
on your command object 答案 1 :(得分:0)
我通常只包含一些代码,这些代码将使用自定义验证程序启动对由另一个命令对象组成的任何属性的验证。例如:
Traceback (most recent call last):
File "main.py", line 3, in <module>
smtpserver = s.connect("mail.btinternet.com", 465)
NameError: name 's' is not defined
exited with non-zero status
这种方式非常清楚我希望验证发生。此外,它将所有错误移动到根错误集合中,这使我的事情变得非常简单。