Простой вопрос, но я ничего не могу найти в Интернете, чтобы предложить, как это сделать ... Я хочу, чтобы контроллер запускал проверку jQuery на простой таблице html на экране, прежде чем запускать обновление но я не могу понять, как бы я это сделал, любые идеи?Grails работает jquery в контроллере
Я попытался запустить проверку внутри jQuery, а затем передал значение, которое мне нужно, для действия обновления, используя пост jquery, но это не сработало, когда я проверил параметры, которые он не выглядел, когда я запускаю только регулярное обновление ...
Проблема заключается в том, что у меня есть множество отношений, которые в настоящее время обновляются при добавлении в мой список или обновлении значений в списке, но в минуту я нужно удалить один, с которым я столкнулся с трудностями, то, что я хотел сделать, это получить подсчет таблицы html (которая содержит список связанных элементов), а затем сравнить ее с базой данных, если в таблице меньше, чем в таблице базы данных Я собирался запустить базовое удаление из sql, чтобы очистить теперь избыточные связанные элементы ...
Единственное, что я не могу решить, - это как получить этот счет таблицы во время работы контроллера или вызвать контроллер и передать в этот номер таблицы (ну, я могу вызвать действие и передать n номер таблицы и идентификатор но это, похоже, теряет все остальные параметры), я думал, что def formInstance = Form.get(id)
получит мне все параметры, но это, похоже, не делает этого :(
В качестве альтернативы есть другой способ повторного заполнения моих параметров если у меня есть идентификатор?
Любая помощь очень ценится! :)
контроллерОбновление выглядит так: -
def update(Long id) {
def formInstance = Form.get(id)
int eventCount = formInstance.events.collect().count{id};
if (!formInstance) {
flash.message = message(code: 'default.not.found.message', args: [message(code: 'form.label', default: 'Form'), id])
redirect(action: "list")
return
}
formInstance.properties = params
if (!formInstance.save(flush: true)) {
render(view: "edit", model: [formInstance: formInstance])
return
}
int neweventCount = formInstance.events.collect().count{id};
println(neweventCount)
flash.message = message(code: 'default.updated.message', args: [message(code: 'form.label', default: 'Form'), formInstance.id])
redirect(action: "show", id: formInstance.id)
}
В PARAMS предоставляемые через регулярные сохранить кнопка выглядит так: - [ID: 3, formDesc: форма 3, события [1]. id: 2, события [1]: [id: 2], _action_update: обновление, события [0] .id: 2, события [0]: [id: 2], версия :, action: index, controller: form]
Но через JQuery, как так [ID: 14, Минт: 1, действие: обновление, контроллер: форма]
Резюмируя я думаю й Проблема с сохранением, но я не могу решить, как ее исправить. Например, если я начну с «формой» с 3 «событиями», а затем удалить один из этих событий из таблицы затем сохранить его в PARAMS выглядеть такой: -
[id:1, formDesc:form 112, events[1].id:1, events[1]:[id:1], _action_update:Update, events[0].id:1, events[0]:[id:1], version:, action:index, controller:form]
Как вы можете видеть теперь только два события (0 и 1) отображаются, и они обновляются, как я хочу, но третье событие, которое больше не отображается в параметрах, не удаляется из таблицы ссылок, как я хочу.
Единственный способ, которым я могу думать, это получить размер таблицы с экрана, а затем сравнить его с количеством сохраняемых событий и выполнить ручное удаление SQL до или после сохранения, но я не могу работать как это сделать ...
Самый простой способ, я могу думать, это удалить все отношения и вставить только значения, отмеченные пользователем. Если вы не хотите этого делать, вам нужно проверить экземпляры, которые существуют в базе данных, и сравнить их со значениями, отмеченными пользователем. Если вы выберете второй вариант, разместите свое мнение, чтобы узнать, как значения пришли в 'params'. –
Я думал об удалении всех значений из базы данных, надеясь, что функция сохранения просто добавит их обратно, но когда я попробую, чтобы она завершилась с ошибкой, читайте «Пакетное обновление возвратило неожиданный счетчик строк из обновления [0]; фактическое количество строк: 0; Ожидаемый: 1 – MorkPork
Итак, разместите свой контроллер и просмотрите код, который поможет понять вашу проблему. –