Как настроить тег выбора в Grails - PullRequest
0 голосов
/ 22 мая 2018

У меня есть hasMany отношение между клиентом и продуктом.Когда я генерирую представления и контроллеры, в представлении создания продукта я могу выбрать клиента.По умолчанию Grails отображает выборку, содержащую только идентификатор клиентов.Как я могу это изменить?Например, я хочу показать только имя клиента вместо идентификатора.

Я использую Grails 3.3, Вот код домена:

client.groovy :

class client {
    String FirstName
    String LastName

    static hasMany = [products: Product]
}

product.groovy :

class product {
    String Name
    int Price
    Client c

    static belongsTo = Client
}

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Вы можете настроить внешний вид select, указав атрибуты optionKey и optionValue:

<g:select from="${Client.list()}" name="client" optionKey="FirstName" optionValue="id" />

Подробнее см. справочный документ .

Если вам нужно сделать что-нибудь более изворотливое, например, показать имя и фамилию, вы можете немного предварительно обработать список:

<g:select from="${Client.list().collect{ [ id:it.id, name:it.firstName + ' ' + it.lastName ] }}" name="client" optionKey="name" optionValue="id" />
0 голосов
/ 22 мая 2018

Я полагаю, что в созданном по умолчанию списке выбора будет использоваться метод toString() объекта в качестве отображаемого значения для каждого <option> и идентификатора для ключевого значения.Самый простой способ изменить отображение по умолчанию - переопределить toString() в вашем классе продуктов:

@Override
String toString() {
  name
}
...