Я новичок в Grails и, очевидно, что-то пропустил ... но что ?!Как выбрать несколько значений из ограничения inList в Grails?
Я создал DomainClass An с категорией свойств String. В ограничениях я определил, что эта категория должна иметь несколько (список) значения:
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])
}
}
Когда я выбираю/сохраняю только одно значение, он выбирается/отображается/сохраняется как ожидалось. Когда я хочу, чтобы выбрать/сохранить много значений из этого списка, я получил сообщение о том, что seleced значения не в списке (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]].
Любой намек ценится.
EDIT:
Как Mr.Cat отметил, одна из моих ошибок было определить свойство категории, как String
и не List<String>
. Теперь выбранные значения отображаются как выбранные, но сообщение об ошибке (default.not.inlist.message) по-прежнему остается.
Можете ли вы вставить возвращенную ошибку и код, который выполняет операцию сохранения? – lucke84
Но почему вы пытаетесь установить список значений String простой переменной String несколькими select? –
Что произойдет, если вы измените свое ограничение на 'inList: [" do "," me "," a "," favor "]. Permutations() as List'? Вам нужно будет изменить свой тег select, чтобы получить его значения из другого места. – doelleri