gpt4 book ai didi

validation - Grails 跨类验证

转载 作者:行者123 更新时间:2023-12-02 14:52:21 26 4
gpt4 key购买 nike

我尝试验证来自两个不同对象的两个语言字段。我找到了Grails Validation所以我创建了:

class Test {
Title title
Summary summary

static contraints ={
title validator: { val, obj ->
if (obj.title.getLanguage().equals(obj.summary.getLanguage())) println "same language"
}
}
}

域摘要
class Summary{
String language }

和域名标题
class Title{
String language}

但在我看来,验证者没有反应。提前致谢。

最佳答案

在没有看到您的域的其余部分的情况下,我无法确定具体细节,但遗漏了一些重要的东西。您缺少对正在验证的实例的引用。使用自定义验证时,有两个可选参数被传递到验证闭包中。一个是正​​在验证的类的实例,另一个是当前属性的值。所以,给定一个这样的域:

class MyPerson {
String name
String nickName

static constraints = {
name(nullable: false, blank: false)
nickName(validator: {val, obj ->
if (obj.name == val) return false // ensure the name and nickname do not equal one another
return true
})
}
}

因此,在上面的示例中,自定义验证确保名称和昵称不匹配。注意 obj.name 的使用引用实例的另一个属性。这是您尝试做的事情的关键。

在您的情况下,您的验证可能如下所示:
static contraints ={
title validator: { val, obj ->
if (obj.title.getLanguage().equals(obj.summary.getLanguage())) println "same language"
}
}

希望这可以帮助。

关于validation - Grails 跨类验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24095592/

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