首先来看一下PreResultListener接口的定义:
PreResultListener是一个监听器接口,它可以在Action完成控制处理之后,系统转入实际的物理视图之间被回调。
什么意思呢? 也就是说action转入实际的物理视图之前会调用该接口的beforeResult()方法,
我们来看一下Strut2文档对PreResultListener接口的两个例子。
可以为拦截器和action都加入这个接口的实现。
下面来个小例子
@Override public String execute() throws Exception { ActionInvocation invocation = ActionContext.getContext().getActionInvocation(); invocation.addPreResultListener(new PreResultListener() { public void beforeResult(ActionInvocation invocation, String resultCode) { System.out.println("返回的逻辑视图名字为 " + resultCode); invocation.getInvocationContext().put("extra", new java.util.Date() + "由" + resultCode + "逻辑视图转入"); } }); if(this.getUsername().equals("fj") && this.getPassword().equals("fj")) { ActionContext.getContext().getSession().put("user", this.getUsername()); this.setTip("Welcome.., " + this.getUsername() + ",您已经成功登陆"); return SUCCESS; } return ERROR; }
这个一个action里的execute方法。我们为它加了一个PreResultListener拦截器。 这个拦截器有什么作用了?记录了用户注册的时间。同时可以插入一些其他的数据。 比如日志数据啊。 ....