Возможно, я не понимаю основную проблему здесь, но простой ответ может быть «они уже прикованы». Фильтры выполняются на основе селектора, который вы указали в закрытии фильтра (например, myPreProcessorFilter (controller: '', action: '') {}). Все селекторы, которые соответствуют вашему контроллеру / действию, будут выполнены. Я делаю это все время с фильтрами регистрации и измерения производительности.
Вот пример. Фильтры logAction и measureMethodTime будут применяться ко всем контроллерам и действиям (поскольку я оставил широко открытый селектор).
import org.springframework.web.context.request.RequestContextHolder as RCH
import com.x.y.*
class PerformanceFilters {
def filters = {
logAction(controller:'*', action:'*'){
before = {
log.debug("${controllerName}.${actionName}: entering; params=${params}")
}
}
measureMethodTime(controller:'*', action:'*'){
before = {
def session = RCH.currentRequestAttributes().getSession(false)
if (session)
{
Q.startTimer("${session.id}-${controllerName}-${actionName}", "method.${controllerName}.${actionName}")
}
}
afterView = {
def session = RCH.currentRequestAttributes().getSession(false)
if (session)
{
Q.stopTimer("${session.id}-${controllerName}-${actionName}", "method.${controllerName}.${actionName}")
}
}
}
}
}