如果您希望將自己的組件集成到JSF-enabled IDE中,您還可以提供補充說明。比如說,除提供其他的設計時信息外,還可以提供一個名為sun-faces-config.xml的XML配置文件,用於描述應在IDE中公開的組件屬性。
既然已經看到如何創建一個簡單的JSF組件,不妨再來看看怎樣創建一個圖形 JSF組件。我們將遵循同樣的基本步驟來設計一個高級JSF圖形組件。讓我們以一個圖形組件(如ILOG JSF圖形組件)為例,通過一組分類,該組件為數據值分布提供了可視化表示。該圖形能夠以條型統計圖、圓形分格統計圖和氣泡式統計圖等各種顯示方法來顯示數據集合。該JSF圖形組件有兩個初始設計限制:
我們已經擁有Java圖形bean組件,它具備所有圖形顯示能力。該組件可以顯示很多圖形,而且可定制性很高。在理想情況下,我們希望利用bean組件,使用它的功能來構成我們的JSF組件的基礎。
普通JSF應用程序需要重新載入整個頁面以更新視圖。這種方法適合基於表單的應用程序,但在很多情況下卻不適用於高度圖形化的用戶界面。因此,我們的JSF圖形組件必須能在不更新整個頁面的前提下處理某些簡單的導航,以提供更好的用戶體驗。
以下是滿足這些需求的解決方案:該JSF圖形組件將管理圖形bean組件,包括創建圖形bean、定制該bean以及使該bean可用於服務器端操作。呈現JSF組件將分為兩個階段完成。JSF呈現程序會產生一個<img>標簽和一套JavaScript對象。客戶端將請求服務器發回一張圖像。這一請求由某個servlet完成,該 servlet獲得圖形bean,並利用圖形提供的方法生成一幅圖像。任何只改變該圖形外觀的進一步用戶交互(放大、掃視、更改樣式表等)都會引起圖形的一次增量更新。如果客戶端不只是要求對圖形圖像進行更新,那麼將提交該頁面。
JSF圖形組件管理圖形bean組件,包括創建圖形bean、對其進行定制,並使其可用於服務器端動作。JSF呈現程序生成一個<img>標簽和一套JavaScript對象。
客戶機通過servlet要求服務器獲得一張圖像。該servlet獲得圖形bean,並通過由圖形提供的方法生成一幅圖像。
如果客戶端不只是要求對圖形外觀的進行更新,那麼頁面將被提交。
JSF圖形組件還配有一套附加的JSF組件。overvIEw可顯示該圖形整體視圖,顯示一個代表圖形視圖的長方形,還應允許用戶掃描可視區域。legend組件可顯示數據集合的相關信息,還能自行在圖形中顯示,依被顯示數據的樣式而定。也能提供客戶端的interactors如掃描和放大,這些功能可看成是客戶端交互,表示與圖形的交互不會像一次正常的JSF交互那樣重新載入整個頁面。
要想呈現圖形組件,只需使用chartVIEw標簽:
< jvcf:chartVIEw id="c" style="width:500px;height:300px" … / >
該數據在Html頁面中作為圖像顯示。該圖像由servlet創建,旨在響應一次HTTP請求(該請求包括指定結果圖像、生成圖像映射以及生成內聯式圖例等各種參數)。結果圖像隨之被嵌入客戶端DOM,頁面中只有圖像自身這一部分被更新。
應用程序核心部件
讓我們看看簡單的定制JSF組件和高級圖形組件之間的一些區別。JSF圖形組件類很像一個標准組件,不過是多了一個可訪問圖形bean(該圖形bean負責生成在Html頁面中顯示的圖像)的圖形屬性。JSF組件可以通過某個綁定值或在當前會話中對這個圖形bean進行局部檢索。當JSF圖形組件成為某個應用程序的核心部件時,可選的JSF組件(如概覽或圖例)便與主圖形相關聯,來顯示附加信息。