Struts 2 使用PreResultListener
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整合開發》
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!