我有Domain类,对于String类型的特定字段,它接受字母数字值,我需要以它应该只接受AB12-QW-1(或)XY-12值的格式进行验证。我该如何验证该领域。
请建议解决方案。 感谢。
答案 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