Получить метод из фильтра

Я использую grails 2.4.4 и настроил фильтр для фильтрации запросов на определенных контроллерах. Есть ли способ получить действие / метод, для которого предназначен запрос? У меня есть аннотации к методам, и я хочу отфильтровать запросы, чтобы проверить, есть ли аннотации у метода, для которого запрашивается запрос, я делаю несколько дополнительных шагов.

class MyTestFilters {

    def filters = {
        testFilter(controller:'myControler', action:'*') {
            before = {
                GrailsClass artefact = grailsApplication.getArtefactByLogicalPropertyName('Controller', controllerName)
                def controller = applicationContext.getBean(artefact.clazz.name)

                Annotation annotation
                try{
                    annotation = controller.getClass().getDeclaredMethod(actionName, *SomeParameter*).getAnnotation(MyAnnotation)
                } catch(Exception e){
                    println e.getMessage()
                }
                if (annotation != null){
                    // Do some extra steps
                }
            }
        }
    }
}

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

2
0
62
1

Ответы 1

Нашел один способ сделать это, перебирая все методы на контроллере.

Method[] methods = controller.class.getMethods().each { method ->
    if (method.name == actionName) {
        annotation = method.getAnnotation(MyAnnotation)
    }
}

Другие вопросы по теме