我正在使用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/