Grails命令对象临时字段验证

时间:2013-10-10 09:49:01

标签: validation grails command-objects

我有一个用户注册表单,其中使用命令对象验证字段。其中一个字段是一个复选框,必须在继续注册之前进行检查,并且它不会保存到域对象中。此复选框在命令对象中具有相应的布尔字段。如果未选中复选框,则会从自定义验证程序中抛出验证错误。

问题是,此错误未在<g:renderErrors bean="${command}" as="xml"/>块中传播(验证器被正确触发)。

命令对象:

class RegisterCommand {

...
Boolean termsChecked
...
static constraints = {
    ...
    termsChecked validator: RegisterController.termsCheckedValidator
}

验证

static final termsCheckedValidator = {termsChecked, command, errors ->
    if (!command.termsChecked) {
        return 'registerCommand.termsChecked.required'
    }
}

GSP文件中的复选框:

<g:checkBox value="${command.termsChecked}" bean="${command}" name='termsChecked'/>

如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

如果将3个参数传递给验证器,最后一个参数为errors,则忽略返回代码,认为Spring Errors正在处理错误。

如果要使用错误代码,则只需将2参数作为

传递给验证器
static final termsCheckedValidator = {termsChecked, command ->
    if (!command.termsChecked) {
        return ['required.termsChecked']
    }
}


//messages.properties
registerCommand.termsChecked.required.termsChecked=blah