Struts 2 使用PreResultListener

jopen 8年前發布 | 6K 次閱讀 Struts2 Web框架

           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整合開發》

 

來自: http://blog.csdn.net/chenssy/article/details/7272857

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