spring - 从过滤器获取方法

标签 spring grails groovy

我正在使用grails 2.4.4,并设置了一个过滤器来过滤某些 Controller 上的请求。有没有一种方法可以获取请求所针对的操作/方法?我在方法上有一个注释,我想过滤请求以检查并查看请求所针对的方法是否具有注释,我做了一些额外的步骤。

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注释。

最佳答案

通过迭代 Controller 上的所有方法找到了一种实现方法

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

关于spring - 从过滤器获取方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49473694/

相关文章:

Spring Redis缓存不驱逐

java - 如何读取 ItemReader 中的所有行并将行和文件地址返回给 ItemProcessor?

java - 如何记录 Spring @RestController @RequestMapping 方法的所有请求和 header 信息?

grails - Grails Spock GORM返回一个空列表

java - 如何以编程方式和动态方式设置 MDB

grails - 如何在Grails 2.0中创建和检索Cookies?

grails - 如何右对齐grails表中的数字编辑值

Groovy - 类中的 MissingPropertyException

amazon-web-services - 如何从config.groovy文件定义和访问grails中的数组

grails - 将参数从一种方法传递到 Controller 中的另一种方法