Grails: Как работает функция UPDATE? - PullRequest
0 голосов
/ 13 октября 2010

Я избавился от оригинальных предложений UPDATE gsp Grails.

Я поместил его в первую строку таблицы list.gsp и изменил все значения таблицы на поле g: text, чтобы их можно было редактировать, не переходя к save.gsp

Но сейчас я пытаюсь заставить это работать, и я не могу.

Я добавил кнопку обновления в последнем столбце каждой строки.

Когда я изменяю значения текстовых полей g: и нажимаю кнопку обновления, это говорит мне

Density #ID updated

но значения не меняются.

Я думаю, что что-то не так с обновлением def в контроллере.

Вот код:

def update = {
        log.info "Entering Action ${actionUri}"

        def densityInstance = Density.get(params.id)
        if (densityInstance) {

                if(params?.Rcommodity) { 
                    println "${params.Rcommodity}"

                }
            if (params.version) {
                def version = params.version.toLong()
                if (densityInstance.version > version) {

                    densityInstance.errors.rejectValue("version", "default.optimistic.locking.failure", [message(code: 'density.label', default: 'Density')] as Object[], "Another user has updated this Density while you were editing")
                    render(view: "list", model: [densityInstance: densityInstance])
                    return
                }
            }
            densityInstance.properties = params
            if (!densityInstance.hasErrors() && densityInstance.save(flush: true)) {
                flash.message = "${message(code: 'default.updated.message', args: [message(code: 'density.label', default: 'Density'), densityInstance.id])}"
                redirect(action: "list", id: densityInstance.id)
            }
            else {
                redirect(action: "list", id: densityInstance.id)
            }
        }
        else {
            flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'density.label', default: 'Density'), params.id])}"
            redirect(action: "list")
        }
    }

Rcommodity - это имя созданных текстовых полей, я положил println, чтобы увидеть, было ли значение правильным, теперь я не знаю, как сделать значение текстового поля введенным, оно дает мне то же значение это было раньше, но оно дает мне сообщение о том, что оно было обновлено. Контроллер - DensityController, а домен - плотность

.

Любая помощь будет принята с благодарностью. Спасибо: D

1 Ответ

1 голос
/ 14 октября 2010

Из распечатанного флэш-сообщения выглядит так, как будто экземпляр обновляется (хотя бит "#ID" выглядит странно - вы заменили фактический идентификатор?).

Возможно,

densityInstance.properties = params

на самом деле не соответствует ни одному из свойств экземпляра, поэтому ни одно из них не изменяется до сохранения.Вы уверены, что назвали свои поля ввода gsp так, чтобы они совпадали с именами полей класса Density?Является ли Rcommodity свойством Density, например?

Может помочь добавить бит формы вашей страницы gsp, а также класс домена Density.

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