我正在尝试使默认数据出价与具有域对象列表的命令对象一起使用。这是我创建的示例项目中的域类和命令对象,而不是我的最终域。
package testbinding
import grails.validation.Validateable
@Validateable
class SelectionCommand implements Serializable {
List<Book> books
Author author
}
有书和作者:
package testbinding
class Book {
Long id
String name
static constraints = {
}
}
package testbinding
class Author {
Long id
String name
static constraints = {
}
}
控制器:
def index(SelectionCommand command) {
println command
if (command?.hasErrors()) {
println command?.errors
}
[command: command]
}
如果我有一个使用书域索引的表单,则装订正确。例如:
<label>Books</label>
<input name="book[0].id" value="1"/>
<input name="book[1].id" value="2"/>
<label>Author</label>
<g:select name="author.id" value="${1L}" from="${Author.list()}" optionKey="id" optionValue="name"/>
<button type="submit">Submit</button>
这可以正确绑定,但是我需要将书作为下拉菜单,以便无法对其进行索引。
使用时:
<label>Books</label>
<g:select name="books" from="${Book.list()}" multiple="true" optionKey="id" optionValue="name" value="${[1L, 2L]}"/>
<label>Author</label>
<g:select name="author.id" value="${1L}" from="${Author.list()}" optionKey="id" optionValue="name"/>
<button type="submit">Submit</button>
我无法正确获取绑定。我尝试使用name="books"
和name="books.id"
并同时遇到验证错误。
我的示例项目正在使用Grails 2.3.9,但在2.3.11中也遇到了同样的问题。
为此有一个旧的issue,但应该在2.3.x中解决。
答案 0 :(得分:1)
回答我自己的问题。在Grails 2到2.4.4(https://github.com/grails/grails-core/issues/1380)中,这显然仍然是一个问题。