gpt4 book ai didi

grails - 错误中的多个值选择

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

我正在尝试使用<g:select multiple='true'>选择多个值,但是当我尝试将表单保存到数据库时,出现此错误

Property [Languages] of class [class com.Myapp.hr.EmploymentSeeker] with value [french,english] is not contained within the list [[french, english, russian, chinese]]

这是我的域名:
class EmploymentSeeker {
Set<String> languages = [] as Set
static hasMany = [ languages: String ]
static constraints = {
languages(nullable:true,inList:Holders.config.languages)
}

}

配置文件:
languages=[
'french',
'english',
'russian',
'chinese'
]

GSP:
<g:select  multiple="true" name="languages" from="${employmentSeekerInstance.constraints.languages.inList}" value="${employmentSeekerInstance?.languages}" valueMessagePrefix="empSeeker.languages" noSelection="['': '']"/>

什么可能导致此错误?

最佳答案

如Grails文档中所述:

inList: Constrains a value so that it must be contained within the given list.



问题是您的inList常量是一个字符串列表,但是 languages中的 EmploymentSeeker不是 字符串,而是 设置

如果它是 字符串,那么它将起作用,例如: 'french'包含在 ['french','english','russian','chinese']
但是您有一个 设置,所以 ['french']中不包含 ['french','english','russian','chinese']
要使其与inList一起使用,您必须在约束列表中设置用户可以选择的所有组合,例如: [['french'], ['french', 'english'], ['english', 'french'] ...]等。
This答案描述了如何归档这些组合,但实际上这不是一个好的解决方案,因为 subsequences()不在乎排列。但是,添加排列会在语言列表增长之后成倍增加约束列表。

如您所见,在您的情况下,在列表中使用 不是一个好的解决方案。

我建议实施您的自定义简单约束,如下所示:
languages(nullable:true,validator: {value, object ->
Holders.config.languages.containsAll(value)​​​)​
})

您可以阅读有关自定义约束herehere的信息。

关于grails - <g:select>错误中的多个值选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37075894/

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