我是 Grails 的新手,显然遗漏了一些东西……但是什么?!
我创建了一个带有 String 属性类别的 DomainClass An。在我定义的约束中,这个类别应该有多个(列表)值:
class An {
String category
static constraints = {
category nullable: true, inList:["do", "me", "a", "favour"]
}
}
在视图中,它显示为一个多选框:
<g:select name="category" from="${anInstance.constraints.category.inList}"
value="${anInstance?.category}"
valueMessagePrefix="a.category"
noSelection="${['': 'Please select one ...'}"
multiple="multiple" size="5"/>
保存方法是标准的:
def save = {
def anInstance = new An(params)
if (anInstance.save(flush: true)){
flash.message = "${message(..)}"
redirect(action: "show", id: anInstance.id)
} else {
render(view: "create", model: [anInstance: anInstance])
}
}
当我只选择/保存一个值时,它会按预期选择/显示/保存。当我想从此列表中选择/保存许多值时,我收到一条消息,即所选值不在列表中(default.not.inlist.message):
Property [category] of class [class An] with value [do, me, a, favour] is not contained within the list [[do, me, a, favour]].
任何提示表示赞赏。
编辑:
正如猫先生指出的那样,我的错误之一是将类别属性定义为String
而不是List<String>
。现在选定的值显示为选中,但错误消息 (default.not.inlist.message) 仍然存在。