gpt4 book ai didi

Grails 全局约束

转载 作者:行者123 更新时间:2023-12-04 23:33:10 24 4
gpt4 key购买 nike

在 1.2 版中,Grails 引入了全局约束。我尝试将以下内容添加到 Config.groovy

grails.gorm.default = {

constraints {
notBlank(nullable:false, blank:false)
}
}

然后在我的域类之一中使用它
static constraints = {
email(email: true, unique: true, shared: 'notBlank')
}

但是当我保存一个邮箱为空的用户时,却没有报错,为什么呢?

谢谢,
大学教师

最佳答案

我从来没有尝试过做全局约束,但我可以告诉你,如果你想将一个字段标记为非空且不可为空,你根本不需要创建一个新的约束,只需将它添加到你的域类中:

static constraints = {
email(blank:false)
}

当然,如果您期望在保存时出现异常,您将不会得到异常 - 您需要在调用 save() 或 validate() 之后测试对象,如本域类所示:
class Contact {
static constraints = {
name(blank:false)
}
String name
}

及其测试用例:
import grails.test.*

class ContactTests extends GrailsUnitTestCase {
protected void setUp() {
super.setUp()
}

protected void tearDown() {
super.tearDown()
}

void testNameConstraintNotNullable() {
mockDomain Contact
def contact = new Contact()
contact.save()
assertTrue contact.hasErrors()
assertEquals "nullable", contact.errors["name"]
}
}

如果您确实希望在保存时异常(exception),您可以在 Config.groovy 中添加此设置:
grails.gorm.save.failOnError = true

我发现它在开发中非常有用。

HTH

聚苯乙烯

要使用您定义的约束,您需要将其添加到域类中:
static constraints = {
email(shared:"myConstraintName")
}

但是请注意,您不能像内置的那样在单元测试中测试约束,因为配置不会被读取。

关于Grails 全局约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2158341/

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