Проблема доступа к params.id в фильтре - PullRequest
1 голос
/ 14 августа 2010

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

Мои контроллеры упрощены:

class FooController {

    static allowedMethods = [save: "POST", update: "POST", delete: "POST"]

    def save = {

        def fooInstance = new Foo(params)

        if (fooInstance.save()) {
           // params.id = fooInstance.id
            return redirect(action: "show", id: fooInstance.id)
        } else {
            return render(view: "create", model: [fooInstance: fooInstance])
        }
    }
}

Мой фильтр должен получить идентификатор объекта, который я помещаю в обратный редирект, но если я не раскомментирую params.id = fooInstance.id выше, мой фильтр получит значение null для params.id, я должен что-то упустить, что касается области переменная:

 def filters = {

        history(controller: '*', action: 'save|update|delete|restore') {

            after = { 
                println params.id
            }
    }
}

Я также попытался передать модель в after =, ожидая получить мой fooInstance, но я также получил null. Есть идеи о том, что не так? Спасибо.

1 Ответ

2 голосов
/ 14 августа 2010

Посмотрите на этот плагин http://grails.org/Hibernate+Events+Plugin или плагин журнала аудита Grails. Я думаю, что они довольно далеко тебя уйдут.

Это другой подход, чем вы упоминаете в своем вопросе, но я думаю, что вы могли бы предпочесть его.

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