gpt4 book ai didi

域类的 Grails 自定义验证器

转载 作者:行者123 更新时间:2023-12-01 11:58:18 25 4
gpt4 key购买 nike

我有一个限制,所以不能超过ConfigurationHolder.config.support.reminder.web.person.max 对象存储。我没有找到如何添加与特定属性无关的验证器。所以现在我以这种方式实现它。你们有什么想法可以让它变得更好吗?

package support.reminder.web

import org.codehaus.groovy.grails.commons.ConfigurationHolder;

class Person {

String firstName
String lastName
String email
Date lastDutyDate

static constraints = {
firstName(blank: false)
lastName(blank: false)
email(blank: false, email: true)
lastDutyDate(nullable: true)
id validator: {val ->
if (val)
Person.count() <= ConfigurationHolder.config.support.reminder.web.person.max
else
Person.count() < ConfigurationHolder.config.support.reminder.web.person.max
}
}

String toString() {
"[$firstName $lastName, $email, $lastDutyDate]"
}
}

最佳答案

您可以使用 Grails Custom Constraints Plugin管理您的验证实现。然后你可以像预定义的 Grails 约束一样调用你自己的约束:

package support.reminder.web

import org.codehaus.groovy.grails.commons.ConfigurationHolder as CH

class Person {

String firstName
String lastName
String email
Date lastDutyDate

static constraints = {
firstName(blank: false)
lastName(blank: false)
email(blank: false, email: true)
lastDutyDate(nullable: true)
id(maxRows: CH.config.support.reminder.web.person.max)
}

}

或者,如果您不想依赖第三方插件,您可以在服务方法中实现自定义验证器的逻辑,但从域中的自定义验证器调用它:

package support.reminder.web

import org.codehaus.groovy.grails.commons.ConfigurationHolder as CH

class Person {

def validationService
String firstName
String lastName
String email
Date lastDutyDate

static constraints = {
firstName(blank: false)
lastName(blank: false)
email(blank: false, email: true)
lastDutyDate(nullable: true)
id (validator: {val ->
validationService.validateMaxRows(val, CH.config.support.reminder.web.person.max)
}
}

}

关于域类的 Grails 自定义验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4725059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com