有没有办法在optionValue中显示多个字段名称?
<g:select name="id" from="${Books.list()}" optionKey="id"
value="" optionValue="name"
noSelection="${['null':'Select Publisher...']}"/>
EXPE:
<g:select name="id" from="${Books.list()}" optionKey="id"
value="" optionValue="name and author"
noSelection="${['null':'Select Publisher...']}"/>
答案 0 :(得分:39)
如果您不想修改域类,可以为您的选项值传递一个闭包:
<g:select name="id" from="${Books.list()}" optionKey="id"
value="" optionValue="${{it.name +' '+it.author}}"
noSelection="${['null':'Select Publisher...']}"/>
答案 1 :(得分:10)
您可以在域类中引入一个瞬态属性,您可以在g的selectValue中使用:select:
class Book {
String name
String author
static transients = [ 'nameAndAuthor' ]
public String getNameAndAuthor() {
return "$name, $author"
}
}
你的g:选择看起来像:
<g:select name="id" from="${Books.list()}" optionKey="id" value=""
optionValue="nameAndAuthor"
noSelection="${['null':'Select Publisher...']}" />
答案 2 :(得分:5)
或者将toString方法添加到Book类
public String toString() {
"${name} ${author}"
}
然后省略optionValue
<g:select name="id" from="${Books.list()}" optionKey="id"
value="" noSelection="${['null':'Select Publisher...']}"/>
Atleast然后当你在调试器中查看域时,它具有人类可识别的值。
希望这有帮助。