JSF優勢之一:UI組件(UI-component)
UI組件(UI-component)一直是桌面程序的專利,Web程序中,雖然HTML定義 了基本的UI標簽,但要使這些UI標簽像UI組件那樣工作,還需要很多代碼片斷來 處理數據及其表現形式,而且有效地組織這些代碼片斷使其協調一致也是一件繁 瑣的工作。JSF的UI組件是真正意義上的UI組件,能極大地簡化程序員的工作, 例如,在頁面上放置一個文本輸入框,這個輸入框立即具備了數據填充、界面更 新、事件偵聽、動作觸發、有效性檢查和類型轉換的功能。更為重要的是,程序 員只需根據業務邏輯編寫核心業務代碼,JSF會保證代碼在合適的時候被執行, 完全不用考慮代碼與代碼之間該如何來配合。
JSF優勢之二:事件驅動模式
事件是面向對象方法的重要組成部分,對象之間通過事件進行溝通和交流, 使得一個或多個對象能夠對另一個對象的行為作出響應,共同合作去完成一項業 務邏輯。通常,編寫Web程序時,程序員要為對象之間的溝通設計機制,編寫代 碼。雖然溝通的內容屬於業務邏輯,但溝通的機制顯然與業務沒有太大關系,程 序員因此為業務邏輯之外的功能浪費了時間。
JSF改變了這種狀況。JSF的事件和偵聽模式與大家熟悉的Javabean的事件模 式類似,有Java基礎的程序員並不需要學習任何新的東西。JSF的UI組件可以產 生事件,例如,當頁面上一個文本輸入框的內容被修改時,會發出一個“ 值改變事件”。另一個對象如果對“值改變事件”感興趣,只 需注冊為該對象的偵聽者,並編寫處理例程,即可命令JSF在事件發生時自動調 用處理例程。JSF做了所有該做的事,留給程序員的只有業務邏輯代碼的編寫。
JSF優勢之三:用戶界面到業務邏輯的直接映射
舉個例子,表單提交是Web編程最常見的任務,也是最復雜的任務之一。當用 戶在網頁上點擊“確定”按鈕時,浏覽器將生成一個HTTP請求,發往 服務器端的某個Servlet,執行該Servlet的service方法。在service方法中, HTTP請求需要經歷解碼、類型轉換、有效性驗證、狀態保存、數據更新等環節, 處理這些環節的所有細節,對程序員來說是沉重的負擔。
在JSF下,這些工作的很大一部分都由框架承擔了,在程序員看來,這個過程 是透明的,用戶界面端的HTTP請求可以直接映射到後端的一個事件處理例程, JSF起到了承前啟後的作用。