Grails - код кросс-контроллера, выполняемый при каждом запросе - PullRequest
3 голосов
/ 24 марта 2011

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

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

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

Спасибо

Ответы [ 2 ]

4 голосов
/ 24 марта 2011

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

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

class MyFilter {
    def filters = {
        extractSomething(controller: '*', action: '*') {
            before = {
                session.setAttribute('foo', params['paramName'])
            }
        }
    }
}
2 голосов
/ 24 марта 2011
Фильтры

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

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

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

...