如何拦截Struts 2 Actions之间的导航?

时间:2011-04-13 19:25:46

标签: struts2 struts action intercept

我正在使用Struts 2.当用户导航时,是否可以识别并拦截另一个Action?

我需要确定用户是否要使用与当前用户不同的操作。

1 个答案:

答案 0 :(得分:1)

这很容易。只需使用Struts 2拦截器。

public class TestInterceptor extends AbstractInterceptor {

    public String intercept(ActionInvocation invocation) throws Exception {
        // Do checking here, get user from session or from parameter is OK.
        // Example:
        // string returned below will be redirected to result of Struts 2 action
        String roleName = user.getRole().getName();
        if ("admin".equals(roleName) {
            return "admin";
        } else if("user".equals(roleName)) {
            return "user";
        }

        // This means if roleName is not admin or user, the action will be invoked
        return invocation.invoke();
    }

}

然后在 struts.xml 配置中添加上面的拦截器。我想这就是你想要的,对吧?我总是使用这个拦截器。

请参阅http://struts.apache.org/2.x/docs/interceptors.htmlhttp://www.benmccann.com/blog/struts-2-tutorial-interceptors/了解样本。