Можем ли мы иметь более одного поля в g: select optionValue?
Есть ли способ показать более одного имени поля в 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...']}"/>
Ответы
Ответ 1
Вы можете передать закрытие для своего значения параметра, если вы не хотите изменять класс домена:
<g:select name="id" from="${Books.list()}" optionKey="id"
value="" optionValue="${{it.name +' '+it.author}}"
noSelection="${['null':'Select Publisher...']}"/>
Ответ 2
Вы можете ввести свойство переходного процесса в свой класс домена, который вы можете использовать в опции Value g: 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...']}" />
Ответ 3
Или добавьте метод toString в класс Book
public String toString() {
"${name} ${author}"
}
то просто опустите параметр Value
<g:select name="id" from="${Books.list()}" optionKey="id"
value="" noSelection="${['null':'Select Publisher...']}"/>
По крайней мере, когда вы смотрите на домен в своем отладчике, он имеет узнаваемое значение человека.
Надеюсь, что это поможет.