обработка множественного выбора без выбора - PullRequest
2 голосов
/ 07 декабря 2011

Я использовал grails generate-all в своем заявлении.Представление Author имеет множественный выбор, который допускает количество Book экземпляров:

<g:select multiple="true" ... />

Однако, если я отредактирую существующего Author, которому принадлежит 5 из 15 книг (множественный выбор показывает 15 книг, 5 из которых выделены), отмените выбор всех книг и нажмите «Сохранить», Author по-прежнему сохраняет свои 5 книг.Из того, что я могу сказать, нет ввода данных из формы - свойство books Author не изменяется.

Теперь я могу проверить это в моем контроллере (что-то вроде этого):

if (params?.books.size() < 1) {
     authorInstance.books = []
}

Это способ сделать это, или есть лучший способ?

Ответы [ 2 ]

3 голосов
/ 07 декабря 2011

Большинство примеров, которые я видел, используют:

authorInstance.books.clear()
0 голосов
/ 20 мая 2016

У меня была та же проблема, что список множественного выбора не может быть очищен связыванием данных по умолчанию, поскольку карта params не содержит полей со значением NULL.

Чтобы обойти это, вы можете сделать это в вашем .gsp:

<g:hiddenField name="books" value="" />
<g:select multiple="true" name="books" />

Когда вы публикуете элементы формы, мультиселектор переопределяет скрытое поле. Если множественный выбор пуст, вы вернетесь к пустой строке.

Не красиво, но выполняйте работу, когда вы не можете изменить действие контроллера.

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