Как сказал Берт, вам, вероятно, не нужен один экземпляр контроллера внутри вашего фильтра. Это неправильный способ решить вашу проблему.
Контроллеры Grails автоматически внедряются Spring Framework, и при его создании были сделаны некоторые черные операции и процедуры. Итак, я могу заверить вас, что это не способ решить эту проблему.
Как вы сами описали, вы хотите вызвать свое действие, и я могу представить, что вы пытаетесь повторно использовать некоторый код, который находится в вашем действии, возможно, для генерации некоторых данных в вашей базе данных или даже для работы с вашим сеансом HTTP я прав?
Итак, вы можете сделать две вещи, чтобы решить эту проблему.
1) Просто перенаправьте ваш поток запросов на ваш контроллер / действие следующим образом:
* * 1010
2) Или вы можете получить логику внутри своего действия (то есть выполнять ту грязную работу, которую хотите запустить), отделить эту логику внутри одного сервиса и повторно использовать сервис в обоих классах (действие / сервис) следующим образом:
MyService.groovy
class MyService {
def methodToReuse() {
(...)
}
}
MyController.groovy
class MyController {
def myService //auto-injected by the green elf
def myAction = {
myService.methodToReuse()
}
}
MyFilters.groovy
class MyFilters {
def myService //auto-injected by the red elf
(...)
myService.methodToReuse()
(...)
}
[] s,