首页 > 代码库 > Struts2监听Action结果的监听器

Struts2监听Action结果的监听器

作者:禅楼望月

前面我们学到了在特定的Action中配置结果监听器,在Action完成控制处理之后,struts2转入实际的物理视图之前被回调。但是这种方式的缺点是,结果的监听器不能被复用。根据设计模式的里面,哪里变化就封装哪里,那么我们就将这个监听器封装起来。封装到哪里呢?由于在struts2中我们可以在任何需要的Action中配置拦截器,这样我们便可以将监听器封装到一个拦截器中,哪里需要,只需要配置一下即可。

import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;import com.opensymphony.xwork2.interceptor.PreResultListener;public class BeforeResultInterceptor extends AbstractInterceptor {    private static final long serialVersionUID = 8804592842717460916L;    @Override    public String intercept(ActionInvocation inoInvocation) throws Exception {        inoInvocation.addPreResultListener(new PreResultListener() {                        @Override            public void beforeResult(ActionInvocation invocation, String resultCode) {                System.out.println("返回的逻辑视图为:"+resultCode);                            }        });        return "success";    }}

上面代码将一个拦截器注册进一个拦截器中,使用的时候只需要将这个拦截器配置给Action即可。配置和配置普通的拦截器一样。

注意:在监听器的beforeResult(ActionInvocation invocation, String resultCode)方法中也有一个ActionInvocation,但是在这里千万不要调用该参数的invoke()方法。否则会死循环下去。

欢迎转载,请注明出处。

Struts2监听Action结果的监听器