Можем ли мы иметь более одного поля в g: select optionValue? - PullRequest
12 голосов
/ 19 ноября 2010

Есть ли способ показать более одного имени поля в 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...']}"/>

Ответы [ 3 ]

39 голосов
/ 20 ноября 2010

Вы можете передать закрытие для значения вашего параметра, если вы не хотите изменять класс своего домена:

<g:select name="id" from="${Books.list()}" optionKey="id"
          value="" optionValue="${{it.name +' '+it.author}}"
          noSelection="${['null':'Select Publisher...']}"/>
10 голосов
/ 19 ноября 2010

Вы можете ввести временное свойство в своем доменном классе, которое вы можете использовать в optionValue g: select:

class Book {
    String name
    String author

    static transients = [ 'nameAndAuthor' ]

    public String getNameAndAuthor() {
        return "$name, $author"
    }
}

Ваш g: select выглядит так:

<g:select name="id" from="${Books.list()}" optionKey="id" value="" 
    optionValue="nameAndAuthor" 
    noSelection="${['null':'Select Publisher...']}" />
5 голосов
/ 20 ноября 2010

Или добавьте метод toString в свой класс Book

public String toString() {
"${name} ${author}"
}

, а затем просто опустите optionValue

<g:select name="id" from="${Books.list()}" optionKey="id"
          value="" noSelection="${['null':'Select Publisher...']}"/>

По умолчанию, когда вы смотрите на домен в отладчике, у него есть человекузнаваемое значение.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...