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