如何为特定格式的groovy中的字段放置验证

时间:2011-05-13 11:26:04

标签: validation grails groovy

我有Domain类,对于String类型的特定字段,它接受字母数字值,我需要以它应该只接受AB12-QW-1(或)XY-12值的格式进行验证。我该如何验证该领域。

请建议解决方案。 感谢。

2 个答案:

答案 0 :(得分:3)

假设您的域类看起来像这样

class Foo {
  String bar
}

如果您可以定义仅与合法值匹配的正则表达式,则可以使用以下方法应用约束:

class Foo {
  String bar
  constraints = {
    bar(matches:"PUT-YOUR-REGEX-HERE")
  }
}

或者,如果您可以轻松列出所有合法值,则可以使用:

class Foo {
  String bar
  constraints = {
    bar(inList:['AB12-QW-1', 'XY-12'])
  }
}

如果这些解决方案都不起作用,那么您可能需要编写custom validator method

答案 1 :(得分:1)

您可以使用custom validator

class YourDomain {
  String code

  static constraints = {
    code( validator: {
      if( !( it in [ 'AB12-QW-1', 'XY-12' ] ) ) return ['invalid.code']
    })
  }
}

但是,您对哪些代码有效的解释有点模糊,因此您可能需要其他代码来代替in调用

[编辑]

假设您的两个字符串只显示字母或数字的占位符,则以下正则表达式验证程序工作:

constraints = {
  code( matches:'[A-Z]{2}[0-9]{2}-[A-Z]{2}-[0-9]|[A-Z]{2}-[0-9]{2}' )
}

如果失败,那将返回错误yourDomain.code.matches.invalid