JSF教程(11)——生命週期之Invoke Application Phase

來源:互聯網
上載者:User

標籤:style   blog   java   2014   cti   for   

在這個階段JSF實現將處理任何應用界別的事件,例如表單的提交或者連結點擊後跳轉到另一個頁面。

這時如果應用需要重新導向不同 的web應用字眼或者產生一個資源其並不喊任何的JSF組件,那麼就調用FacesContext.responseComplete方法。

如果正在被處理的這個視圖是從重建狀態資訊從先前的一個請求而且如果一個組件引發了一個事件,那麼這些事件將會傳遞到相關的監聽器中。

最終JSF實現者將控制權轉移到下一個步驟render Response phase

這個階段是整個JSF宏觀生命週期中Execute階段的最後一個階段,前面依次經曆了幾個對值進行處理的階段:通過根據不同的請求對view進行處理(Restore View Phase),然後取值(Apply Request Values Phase),驗證值的合法性(ProcessValidations Phase),更新頁面中組件的值(Update Model Values Phase)。最終拿到值之後開始了對事件的處理。

public void execute(FacesContext facesContext) throws FacesException {        if (LOGGER.isLoggable(Level.FINE)) {            LOGGER.fine("Entering InvokeApplicationsPhase");        }        UIViewRoot root = facesContext.getViewRoot();        assert (null != root);        try {            root.processApplication(facesContext);        } catch (RuntimeException re) {            String exceptionMessage = re.getMessage();            if (null != exceptionMessage) {                if (LOGGER.isLoggable(Level.WARNING)) {                    LOGGER.log(Level.WARNING, exceptionMessage, re);                }            }            throw new FacesException(exceptionMessage, re);        }        if (LOGGER.isLoggable(Level.FINE)) {            LOGGER.fine("Exiting InvokeApplicationsPhase");        }    }

如果對processApplication方法感興趣的童鞋可以反編譯看一下源碼。其實在javaee的文檔中對這個方法的描述已經很清楚了。

Broadcastany events that have been queued for the Invoke Application phase of therequest processing lifecycle and to clear out any events for later phases ifthe event processing for this phase caused FacesContext.renderResponse() orFacesContext.responseComplete() to be called. 

大致的意思就是為此階段傳遞事件,並且清除引起上面兩個方法被調用的事件。因為這兩個方法被調用標誌著整個請求的結束,但是目前階段還未完全處理完請求。

到此為止整個JSF的生命週期宏觀上的Execute部分(在伺服器上所執行的部分)就已經執行完畢了,接下來就是渲染用戶端的頁面了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.