Grails 创建自定义验证器

Grails 创建自定义验证器,grails,validation,Grails,Validation,我应该如何创建和配置验证器类以将其用作域类约束?例如: class Link { String url static constraints = { url url:true } } 动机:Grails UrlValidator不允许下划线字符,尽管它是有效的,请参阅 您可以在src/groovy中拥有一个实用程序类,该类具有所需的验证器(作为静态属性),并在相关的域类中引用它们 //src/groovy class MyValidators{ static urlCh

我应该如何创建和配置验证器类以将其用作域类约束?例如:

class Link {
    String url
    static constraints = { url url:true }
}

动机:Grails UrlValidator不允许下划线字符,尽管它是有效的,请参阅

您可以在
src/groovy
中拥有一个实用程序类,该类具有所需的验证器(作为静态属性),并在相关的域类中引用它们

//src/groovy
class MyValidators{
    static urlCheck = {url, obj ->
        //custom validation for url goes here.
    }
}

class Link {
    String url
    static constraints = { 
        url validator: MyValidators.urlCheck 
    }
}
如果不需要将验证器外部化为单独的实用程序类,那么您可以直接在域类中使用验证器,如下所示:

static constraints = {
    url validator: {value, obj -> ...} 
}

您可以在
src/groovy
中拥有一个实用程序类,其中包含所需的验证器(作为静态属性),并在相关的域类中引用它们

//src/groovy
class MyValidators{
    static urlCheck = {url, obj ->
        //custom validation for url goes here.
    }
}

class Link {
    String url
    static constraints = { 
        url validator: MyValidators.urlCheck 
    }
}
如果不需要将验证器外部化为单独的实用程序类,那么您可以直接在域类中使用验证器,如下所示:

static constraints = {
    url validator: {value, obj -> ...} 
}

您还可以创建一个自定义验证器来扩展URL验证器。谢谢你,詹姆斯!很高兴学习如何创建自定义约束!您还可以创建一个自定义验证器来扩展URL验证器。谢谢你,詹姆斯!很高兴学习如何创建自定义约束!谢谢德马哈帕特罗!我认为验证器有一个特定的位置。你的回答和詹姆斯的评论帮助我更好地了解了这一切是如何运作的。谢谢德马哈帕特罗!我认为验证器有一个特定的位置。你的回答和詹姆斯的评论帮助我更好地了解了这一切是如何运作的。