您的位置:首页 > 编程语言 > Java开发

Struts 2使用PreResultListener

2015-07-21 09:32 465 查看
PreResultListener是要给监听器接口,他可以在Action完成控制处理之后,系统转入实际的物理视图之间被回调。

Struts 2 可以由ActionInvocation的addPreResultListener()方法来完成。

Struts 2 可以由Action和拦截器添加PreResultListener监听器。当为Action添加了改监听器,该监听器就可以再应用转入到实际物理视图之前回调该监听器的beforeResult()方法;当为拦截器添加监听器后,该监听器会对该拦截器所拦截的所有action都起作用。

如:

[java] view
plaincopyprint?

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();

<span style="color:#ff0000;"> </span><span style="color:#000000;">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+"逻辑视图转入");

}

});

</span>

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的细节。

本文转载自/article/1392365.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: