Выбор нескольких значений из тега select в Grails - PullRequest
2 голосов
/ 27 июля 2011

у меня есть 2 класса домена, как показано ниже

class User
 {
  String userId
  String userName
  SsGroups groups
  **static hasMany = [groups:SsGroups]
  static belongsTo=SsGroups**
  }

 class SsGroups
  {
  String groupId
  **static hasMany = [users:User]**

  }

Я реализовал отношение многие ко многим, оно работает хорошо и хорошо. Теперь я хочу выбрать несколько групп из SsGroups в одну Пользователь , вот код в Пользователь , create.gsp .

<g:select name="groups.id" multiple="yes" from="${app.SsGroups.list()}"  optionKey="id"   value="${userInstance?.groups?.id}"  />

но при сохранении появляется сообщение об ошибке Ошибка 500: Выполнение действия [сохранить] контроллера [app.UserController] вызвало исключение: groovy.lang.MissingMethodException: Нет подписи метода: app.SsGroups.get () применимо для типов аргументов: (java.lang.String, java .lang.String) значения: [2, 3] Возможные решения: get (java.lang.Object), getId (), getAt (java.lang.String), list (), getAll (), getLog (). подскажите, пожалуйста, как выбрать несколько значений и сохранить их?

Этот контроллер Пользователь:

def save = {
    def userInstance = new User(params)
    if (userInstance.save(flush: true)) {
        flash.message = "${message(code: 'default.created.message', args: [message(code: 'user.label', default: 'User'), userInstance.id])}"
        redirect(action: "show", id: userInstance.id)
    }

в нем нет get() метода. Где мне нужно написать getAll() метод?

1 Ответ

0 голосов
/ 27 июля 2011

Это потому, что params.groups.id возвращает массив выбранных групп в вашем элементе множественного выбора, в данном случае '[2, 3]'. Используйте метод getAll вместо метода get . GetAll поддерживает аргумент массива.

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