iteye_17318
2009-06-08 10:34
浏览 171
已采纳

如何获取struts2执行动作的method?

struts2的拦截器功能比较强大,但最近遇到一个困惑的问题,研究了好长时间仍没有方法。

在struts2中一个form有多个action时,可以很简单实现:
<s:form action="submit" namespace="/demo">
<s:textfield name="msg" label="输入内容" />
<s:submit name="save" value="保存" align="left" method="save" />
<s:submit name="print" value="打印" align="left" method="print" />
</s:form>

但是我想做一个统一的权限过滤器,也就是说save和print是有权限的才能执行,我现在无法在demo.action得到method,在哪个过程里做呢?请大虾给予帮助!

stuts1.*里面有一个getMethodName的过程,可struts2里不知道该如何做

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • Puras 2009-06-08 15:50
    已采纳

    在拦截器中:
    protected String doIntercept(ActionInvocation inter) throws Exception {

    通过 :
    log.debug([b]inter.getProxy().getMethod()[/b]);

    可以获取你所执行的Method方法。

    可以满足你的需求。 :lol:

    打赏 评论
  • chengxing6666 2009-06-08 10:45

    将方法名挂在URL的参数后面不就得了,我们系统现在就是这么做的,然后在ACTION中判断传过来的方法名,进行不对的方法调用

    打赏 评论
  • chengxing6666 2009-06-08 10:49

    还有就是在界面用隐藏域搞一个方法名的变量,点不同的按钮就可以给这个变量动态给值。

    打赏 评论
  • shanxmxj 2009-06-08 12:28

    在struts2配置文件中有个ApplicationFramework.xml的文件
    可以在这里添加拦截器,拦截Action中除get,set方法外的所有方法:




    /aop:aspect
    /aop:config

    在类可以通过
    Object o;
    o = pjp.proceed();
    String shortName = pjp.toShortString();
    String methodName = shortName.substring(10, shortName.length() - 1);//获取方法名称
    String className = pjp.getTarget().getClass().getName();//获取该方法所在的包.

    打赏 评论
  • zhangqi2610 2009-06-08 17:31

    自定义一个拦截器,在该拦截器中实现权限的检查,检查不通过不执行action
    public class AuthorityInterceptor extends AbstractInterceptor
    {
    public String intercept(ActionInvocation invocation) throws Exception
    {
    ActionContext ctx = invocation.getInvocationContext();
    ValueStack vs = invocation.getStack();
    Map session = ctx.getSession();
    // 读取必要信息
    String user = (String)session.get("user");
    // TODO 权限检查
    if (/**检验OK*/)
    {
    //执行action
    return invocation.invoke();
    }
    // 返回错误
    return Action.LOGIN;
    }
    }
    对所有要进行权限检查的action都使用该拦截器进行权限检查.
    <!-- 权限控制拦截器-->





    <!-- 拦截器-->
    <!-- struts2默认拦截器栈 -->

    <!-- 权限控制拦截器 -->


    打赏 评论
  • pp263020776 2009-06-09 10:37
    打赏 评论

相关推荐 更多相似问题