Grails - код кросс-контроллера, выполняется по каждому запросу

Есть ли способ выполнить какой-то фрагмент кода до вызова какого-либо действия контроллера?

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

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

Спасибо


person DanC    schedule 24.03.2011    source источник


Ответы (2)


Похоже, вы хотите использовать фильтр.

например grails-app / conf / MyFilter.groovy

class MyFilter {
    def filters = {
        extractSomething(controller: '*', action: '*') {
            before = {
                session.setAttribute('foo', params['paramName'])
            }
        }
    }
}
person Rob Hruska    schedule 24.03.2011

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

def beforeInterceptor = {
       session.setAttribute('foo', params['paramName'])
}

http://www.grails.org/Controllers+-+Interceptors

person z.eljayyo    schedule 24.03.2011