validation - Grails命令对象临时字段验证

标签 validation grails command-objects

我有一个用户注册表格,其中使用命令对象来验证字段。字段之一是复选框,在进行注册之前必须选中该复选框,并且该复选框不会保存到域对象。此复选框在命令对象中具有一个对应的 bool(boolean) 字段。如果未选中该复选框,则从自定义验证器抛出验证错误。

问题是,此错误不会在<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'/>

如何解决呢?

最佳答案

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

如果要使用错误代码,则只需将2参数传递给验证器即可

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


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

关于validation - Grails命令对象临时字段验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19292466/

相关文章:

spring - 在 Grails 的命令对象中获取 session

Grails - 将参数绑定(bind)到不同名称的命令对象字段

django 确认密码验证器

ruby-on-rails - Rails before_validation 剥离空白最佳实践

html - 是否有一个 CSS 验证器不像 W3C 那样严格,可以验证诸如 normalize.css 之类的内容?

grails - 将 Backbone 集合传递给 View

grails - Grails导出插件设置列高

grails - 如何在 grails 3.1.8 中从外部文件加载数据源配置?

json - 从CURL到JSON内的空格时,Grails命令对象和404

javascript - if 语句中的多个条件 : Need for validating undefined before checking other conditions