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