В Grails как мне захватить несколько выбранных элементов в g: select? - PullRequest
1 голос
/ 05 сентября 2010

У меня есть класс Contact Domain, который может быть связан с несколькими организациями, которые также являются классами домена. Я хочу использовать поле множественного выбора, чтобы позволить пользователю выбирать организации, связанные с текущим контактом. Поле выбора заполнено доступными организациями. Как назначить выбранные элементы в список организаций в моем классе контактов?

 <g:select name="organizations.id"  
           multiple="multiple" 
           optionKey="id" 
           from="${com.ur.Organization.list()}" 
           value="${contact?.organizations}" />

Выше я пытаюсь описать вышеизложенное, и, хотя в нем есть выборки организаций, кажется, что выбранные элементы не помещаются в поле моей организации.

Спасибо за любой совет.

Edit: Включенные комментарии от krsjunk и omarello.

Вот сокращенная версия классов доменов.

class Contact{
    static searchable = true
    static mapping = {
        sort "lastName"
    }
    String firstName
    String lastName
    .  
    .
    .
    static belongsTo = [organizations:Organization, projects:Project]
}

class Organization {
    static searchable = true
    static mapping = {
        sort "name"
    }
    String name
    static hasMany = [contacts:Contact]
}

Ответы [ 3 ]

5 голосов
/ 05 сентября 2010

Ну, просто измените имя на

<g:select name="organizations"  multiple="multiple" 
          optionKey="id" 
          from="${com.ur.Organization.list()}" 
          value="${contact?.organizations}" />

Должно работать нормально, только что попробовал.

Обратите внимание, что мои определения домена выглядят так (на случай, если у вас что-то другое

class Contact {

    static constraints = {
    }

    static hasMany = [organizations:Organization]

    String name
}


class Organization {

    static constraints = {
    }

    static hasMany = [contacts:Contact]
    static belongsTo = [Contact]

    String name
}
1 голос
/ 05 сентября 2010

одна проблема в том, что value="contact?.organizations" должно быть value="${contact?.organizations}" - не уверен, что это вся проблема или нет.(также атрибут multiple=".." необязателен, если значение является коллекцией)

Вам также может понадобиться name="contact.organizations", чтобы быть name="contact.organizations.id", и другой атрибут optionKey="id"

0 голосов
/ 05 сентября 2010

В новом примере редактирования домена у вас нет отношения один-ко-многим между контактом и организацией.У вас есть один ко многим от организации к контакту.

Так что

value="${contact?.organizations}"

всегда будет одним элементом, а не списком.

Попытка выбрать / назначить несколько организаций для контакта никогда не будет действительной.*

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