gpt4 book ai didi

grails - 验证 grails 域对象中的一组字段

转载 作者:行者123 更新时间:2023-12-02 00:32:12 25 4
gpt4 key购买 nike

我有一个命令对象,它捕获带有 3 个文本区域的反馈表。

class FeedbackCommand {
String textarea1
String textarea2
String textarea3
String username

static constraints = {
textarea1(nullable:true, blank:true)
textarea2(nullable:true, blank:true)
textarea3(nullable:true, blank:true)
username(nullable:false, blank:false)
}
}

我想确保至少填写了一个文本区域。

我想到了添加一个假标志字段作为“约束”字段,然后在该字段的自定义验证器中进行一系列对象检查。如果环顾四周后我没有找到我想要的东西,我会抛出一个错误。

现在,我正在这样做:

class FeedbackCommand {
String textarea1
String textarea2
String textarea3
boolean atLeastOne = true
String username

static constraints = {
textarea1(nullable:true, blank:true)
textarea2(nullable:true, blank:true)
textarea3(nullable:true, blank:true)
atLeastOne(validator: { boolean b, FeedbackCommand form, Errors err ->
if (b) {
if ( (form.textarea1==null || form.textarea1?.isAllWhitespace()) &&
(form.textarea2==null || form.textarea2?.isAllWhitespace()) &&
(form.textarea3==null || form.textarea3?.isAllWhitespace()))
{
// They havent provided ANY feedback. Throw an error
err.rejectValue("atLeastOne", "no.feedback")
return false
}
}
return true
})
username(nullable:false, blank:false)
}
}

有没有更好的办法

  • 验证相关/一组字段(至少一个不能为空,2 个应该有值,等等)?
  • 表达“至少一个不应该为 null/blank”而不是我粗俗的 if 语句 block 的更时髦的方式?

谢谢

最佳答案

Extended Validation插件还添加了对实例验证器的支持,它允许在多个字段上定义约束,而无需定义人工标志字段或无需为涉及的每个字段重复验证器。

关于grails - 验证 grails 域对象中的一组字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6321581/

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