【问题标题】:How do I fake a validation error?如何伪造验证错误?
【发布时间】:2011-04-30 17:50:18
【问题描述】:

我正在使用Grails Webflow 插件。以下是我正在使用的域对象:

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 不为空。如果是,我想抛出一个错误并强制用户为其提供一个值。我尝试使用 validate() 来执行此操作(在 Bar 和 Foo 对象上),但由于 fooProp1 具有 nullable:true 属性,因此它通过了验证。有什么想法吗?

【问题讨论】:

  • 我有点困惑——如果是这样的话,属性不应该只是nullable: false吗?您能否澄清为什么不能将约束添加到您的域?我猜这对我来说是最明显的解决方案。
  • 好吧,允许 Foo 对象存在于数据库中而无需指定 fooProp1。但是,在 webflow 期间,此属性不能为 null,因为它在 webflow 流程结束时使用。

标签: grails spring-webflow grails-domain-class


【解决方案1】:

您可以通过修改以下代码在 Web Flow 中执行此操作:

if(fooObject.fooProp1 == null) {
    fooObject.errors.rejectValue('fooProp1', 'nullable')
}

该方法的第二个参数'nullable' 可能因您的情况而异。您只需将其设置为消息代码(来自 message.properties)即可显示您想要的错误消息。

查看here 了解更多使用reject()rejectValue() 的方法。

【讨论】:

  • 谢谢,这正是我想要的。
猜你喜欢
  • 2017-07-14
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
  • 2018-10-22
  • 1970-01-01
  • 2014-01-28
  • 2018-05-18
  • 1970-01-01
相关资源
最近更新 更多