PreResultListener是要给监听器接口,他可以在Action完成控制处理之后,系统转入实际的物理视图之间被回调。
Struts 2 可以由ActionInvocation的addPreResultListener()方法来完成。
Struts 2 可以由Action和拦截器添加PreResultListener监听器。当为Action添加了改监听器,该监听器就可以再应用转入到实际物理视图之前回调该监听器的beforeResult()方法;当为拦截器添加监听器后,该监听器会对该拦截器所拦截的所有action都起作用。
如:
public class LoginRegistAction extends ActionSupport{
private String username; //用户名
private String password; //密码
private String tip; //封装结果
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getTip() {
return tip;
}
public void setTip(String tip) {
this.tip = tip;
}
//Action包含的注册控制逻辑
public String regist(){
ActionContext.getContext().getSession().put("user", getUsername());
return SUCCESS;
}
//Action包含的登陆控制逻辑
public String login(){
ActionInvocation actionInvocation = ActionContext.getContext().getActionInvocation();
actionInvocation.addPreResultListener(new PreResultListener(){
public void beforeResult(ActionInvocation action,String resultCode){
System.out.println("返回的逻辑视图名字为:"+resultCode);
//在返回resultCode之前加入一个额外的数据
action.getInvocationContext().put("extra", new java.util.Date()+"由"+resultCode+"逻辑视图转入");
}
});
if(getUsername().equals("chenssy")&&getPassword().equals("chentmt")){
ActionContext.getContext().getSession().put("user", getUsername());
setTip("欢迎,"+getUsername()+",您已经成功登陆!");
return SUCCESS;
}
else {
return ERROR;
}
}
}
上面的红色字体代码就示范了为Action添加PreResultListener,这样改监听器就可以在转入物理视图之前激发该监听器
输入正确的用户名和密码登陆后,就可以得到如下页面:
通过上面我们可以看到,通过使用PreResultListener监听指定Action转入不同Result的细节。
读李刚《轻量级java EE企业应用实战(第三版)—struts 2+Spring 3+Hibernate整合开发》
分享到:
相关推荐
struts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jarstruts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jar
struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...
赠送jar包:struts2-json-plugin-2.3.24.jar; 赠送原API文档:struts2-json-plugin-2.3.24-javadoc.jar; 赠送源代码:struts2-json-plugin-2.3.24-sources.jar; 赠送Maven依赖信息文件:struts2-json-plugin-...
struts2-ssl-plugin-1.2.1.jar
struts2-json-plugin,Struts JSON插件
struts2-dojo-plugin-2.3.4 jar 日期控件的jar包 需要的自行下载
struts2-convention-plugin-2.3.32
struts2-convention-plugin-2.3.15.1.jar
struts2-core-2.2.3.1-sources.jar struts2-core-2.2.3.1-sources.jar struts2-core-2.2.3.1-sources.jar
struts2-dojo-plugin-2.2.1.jar, 直接导入到Struts2项目里即可,注意版本。
struts2-convention-plugin-2.3.24.1
struts2-dojo-plugin-2.3.15.3.jar.zip
struts2-core-2.5.18.jar包下载,支持struts2的类库下载
struts2-jquery-plugin-3.1.0.jar
struts2-core-2.5.10.jar ,struts核心包,struts2-core-2.5.10.jar
struts2-jfreechart-plugin-2.1.8.1.jar
默认的struts2-config-browser-plugin包中的ftl文件include标签路径用的相对路径,会找到包内的include文件,将包内ftl里include的路径改成的/开头的全路径。
struts2-convention-plugin-2.1.6.jar
struts2-spring-plugin-2.3.31.jar
struts2的jar之一struts2-core-2.0.14.jar