在拦截器中获取执行方法注释

时间:2011-11-07 14:29:13

标签: java struts2 actioncontext

我有一些需要访问特定用户权限的操作,因此我创建了一个方法注释@RequiredPermission和一个拦截器来验证将要执行的方法是否有注释,以及是否验证了记录的用户拥有权限。

问题是我不知道如何从ActionInvocation获取此信息,也不知道如何从ActionContext获取此信息。

我确信这应该是一种方法,如果不是,我会说它可能是一个不合适的框架。

任何提示?

1 个答案:

答案 0 :(得分:4)

您需要的信息包含在ActionProxy中,可通过ActionInvocation.getProxy()获取。

拥有代理后,您可以将操作本身(来自ActionInvocation)和方法名称(ActionProxy.getMethod())作为字符串访问。

从那时起,它正常的Java反射。

Method method = action.getClass().getDeclaredMethod(actionmethod);
RequiredPermission permission = method.getAnnotation(RequiredPermission.class);
if (sessionUser.inRoles(permission.getRoles()) {
    return invocation.invoke();
}

return Constants.LOGIN_REQUIRED_RESULT;

或者你想要处理实际的逻辑。