As Burt said, you probably don't need one controller instance inside the filter. This is the wrong way to solve your problem.
Grails controllers, which are automatically entered using the Spring Framework, have some black magic and procedures created when it was created. Therefore, I can assure you that this is not a way to solve this problem.
As you yourself described, you want to name your action, and I can imagine that you are trying to reuse some code that is in your action, perhaps to create some data in your database or even to work with your HTTP session , I'm right?
So, you can do two things to solve this problem.
1) Just redirect the request flow to your controller / action as follows:
if (something) { redirect controller: 'xpto', action: 'desired' return false }
2) Or you can get the logic inside your action (which does the dirty work you want to run), split this logic inside one service and reuse the service in both classes (action / service) as follows:
MyService.groovy
class MyService { def methodToReuse() { (...) } }
Mycontroller.groovy
class MyController { def myService
MyFilters.groovy
class MyFilters { def myService
[] with,
source share