一種基于jsf的web端組件敏捷開發(fā)方法【專利說明】一種基于JSF的WEB端組件敏捷開發(fā)方法[0001]
技術(shù)領(lǐng)域:
[0002]本發(fā)明涉及一種基于JSF的WEB端組件敏捷開發(fā)方法,屬于基于JSF技術(shù)開發(fā)的B/S架構(gòu)的計(jì)算機(jī)應(yīng)用軟件開發(fā)領(lǐng)域。【
背景技術(shù):
】[0003]近年來隨著基于JavaServerFace(簡稱JSF)技術(shù)的B/S架構(gòu)的計(jì)算機(jī)應(yīng)用軟件的開發(fā)技術(shù)的發(fā)展,JavaServerFace已經(jīng)由1.0發(fā)展到2.2版本,由JSF和AJAX技術(shù)相結(jié)合形成的RichFace、Iceface、MyFace等框架在計(jì)算機(jī)應(yīng)用軟件開發(fā)領(lǐng)域得到了越來越多的應(yīng)用,JSF以服務(wù)器端組件技術(shù)和傳統(tǒng)JSP、Struts架構(gòu)相比為應(yīng)用軟件的界面開發(fā)提供了組件支持,由于JSF提供的大量的界面組件大大提高了應(yīng)用軟件客戶端開發(fā)效率,雖然如此,對于應(yīng)用軟件客戶端開發(fā)過程中經(jīng)常使用的如:Table表格、PanelMenu、樹等復(fù)雜組件還是比較復(fù)雜,在實(shí)際的應(yīng)用開發(fā)過程中,Table表格有兩種,一種是表格的欄目是固定的,表格的一行對應(yīng)一個(gè)javabean對象實(shí)例;另一種是表格欄目不固定,例如在開發(fā)通用的數(shù)據(jù)庫數(shù)據(jù)查詢界面時(shí),由于查詢的數(shù)據(jù)庫對象不同,數(shù)據(jù)表格欄目不同,這種表格的一行就不能使用javabean對象來對應(yīng)。樹也有兩種,一種樹中的所有的節(jié)點(diǎn)都是一類對象;另一種樹的節(jié)點(diǎn)不是同一類對象,父層次和子層次對象是不同類別對象,例如:父節(jié)點(diǎn)是唱片,子節(jié)點(diǎn)是唱片中歌曲。目前基于JSF的WEB應(yīng)用軟件開發(fā)中,JSF提供了組件界面綁定技術(shù),由具體的應(yīng)用軟件為使用到的各類組件提供數(shù)據(jù)模型、屬性及方法綁定。在一個(gè)具體應(yīng)用軟件開發(fā)過程中大量地使用Table表格、樹、PanelMenu等復(fù)雜組件,由于在應(yīng)用軟件界面中使用的每一個(gè)Table表格、樹、PanelMenu等復(fù)雜組件對應(yīng)的數(shù)據(jù)對象不同,軟件工程師必須為每一個(gè)復(fù)雜組件的使用準(zhǔn)備數(shù)據(jù)模型、屬性及方法,無法通用,這樣工程師必須編寫大量的軟件代碼,軟件可重用性差,軟件的錯(cuò)誤出現(xiàn)概率高,軟件開發(fā)效率低下。【
發(fā)明內(nèi)容】[0004]為了解決上述技術(shù)問題,本發(fā)明提供了一種基于JSF的WEB端組件敏捷開發(fā)方法。[0005]為了達(dá)到上述目的,本發(fā)明所采用的技術(shù)方案是:一種基于JSF的WEB端組件敏捷開發(fā)方法,包括以下步驟,步驟一,分析應(yīng)用軟件界面中對復(fù)雜組件的使用;所述復(fù)雜組件包括表格、樹和PanelMenu;步驟二,通過抽象的類和接口,將具體內(nèi)容存在差異數(shù)據(jù)對象抽象為統(tǒng)一的抽象基類或接口;步驟三,利用反射及注入技術(shù),為復(fù)雜組件提出了若干通用的組件模型;步驟四,在開發(fā)時(shí),將模型類實(shí)例化,定義實(shí)例化的變量。[0006]通用的組件模型有5個(gè),包括基于任意JavaBean對象列表的表格數(shù)據(jù)提供器ObjectListTableProvider、基于Hashmap映射列表的表格數(shù)據(jù)提供器HaspMapListTableProvider、基于同構(gòu)節(jié)點(diǎn)對象的樹模型CommTreeModel、基于異構(gòu)節(jié)點(diǎn)對象的樹模型FreeTreeModel和PanelMenu菜單模型。[0007]所有通用組件模型被封裝在一個(gè)jar包中。[0008]ObjectListTableProvider為固定的欄目的表格提供屬性綁定、方法綁定及數(shù)據(jù)處理方法。[0009]HaspMapListTableProvider從用戶提供的映射列表中提取數(shù)據(jù),為不固定欄目的表格組件提供屬性綁定、方法綁定及數(shù)據(jù)處理方法。[0010]CommTreeModel為節(jié)點(diǎn)都是一類對象的樹提供了屬性、方法及事件的綁定;樹中所有節(jié)點(diǎn)對象都必須實(shí)現(xiàn)ITreeNodeObjectable接口。[0011]FreeTreeModel為各個(gè)層次節(jié)點(diǎn)對象都不是同一類對象,即父層次是一類對象,子層次是另一類對象的樹提供屬性、方法及事件的綁定;樹中所有節(jié)點(diǎn)對象都必須實(shí)現(xiàn)IFreeTreeNodeAble接口。[0012]PanelMenu菜單模型根據(jù)實(shí)現(xiàn)了IMenuItem接口的對象列表動(dòng)態(tài)創(chuàng)建PanelMenu菜單,并將菜單選擇事件和方法傳遞給每個(gè)菜單項(xiàng)。[0013]本發(fā)明所達(dá)到的有益效果:本發(fā)明大大簡化了復(fù)雜組件在應(yīng)用軟件的使用,大大提高基于JSF的WEB端軟件開發(fā)的敏捷性。【附圖說明】[0014]圖1為本發(fā)明流程圖。[0015]圖2為固定欄目的表格提供器ObjectListTableProvider原理框圖。[0016]圖3為不固定欄目的表格提供器HaspMapListTableProvider原理框圖。[0017]圖4為同構(gòu)樹模型CommTreeModel原理框圖。[0018]圖5為自由樹模型FreeTreeModel原理框圖。[0019]圖6為通用PanelMenu菜單模型原理框圖。【具體實(shí)施方式】[0020]下面結(jié)合附圖對本發(fā)明作進(jìn)一步描述。以下實(shí)施例僅用于更加清楚地說明本發(fā)明的技術(shù)方案,而不能以此來限制本發(fā)明的保護(hù)范圍。[0021]如圖1所示,一種基于JSF的WEB端組件敏捷開發(fā)方法,包括以下步驟:步驟一,分析應(yīng)用軟件界面中對復(fù)雜組件的使用;復(fù)雜組件包括表格、樹和PanelMenu。[0022]步驟二,通過抽象的類和接口,將具體內(nèi)容存在差異數(shù)據(jù)對象抽象為統(tǒng)一的抽象基類或接口。[0023]步驟三,利用反射及注入技術(shù),為復(fù)雜組件提出了若干通用的組件模型。[0024]步驟四,在開發(fā)時(shí),將模型類實(shí)例化,定義實(shí)例化的變量。[0025]上述通用的組件模型有5個(gè),都被封裝在一個(gè)jar包中,包括基于任意JavaBean對象列表的表格數(shù)據(jù)提供器ObjectListTableProvider、基于Hashmap映射列表的表格數(shù)據(jù)提供器HaspMapListTableProvider、基于同構(gòu)節(jié)點(diǎn)對象的樹模型CommTreeModel、基于異構(gòu)節(jié)點(diǎn)對象的樹模型FreeTreeModel和PanelMenu菜單模型。[0026]如圖2所示,ObjectListTableProvider為固定欄目的表格提供屬性綁定、方法綁定及數(shù)據(jù)處理方法。[0027]ObjectListTableProvider是一個(gè)Java包裝類,表格的一行由一個(gè)自定義的JavaBean對象承載,表格的每一個(gè)欄目對應(yīng)于對象的一個(gè)屬性,JavaBean對象必須繼承AbstractBaseBean,AbstractBaseBean為抽象的一個(gè)基類,通過UUID為自定義JavaBean對象提供了唯一的內(nèi)部標(biāo)識,在自定義的JavaBean對象中實(shí)現(xiàn)表格中主鍵是否相同判別,這樣的Javabean對象列表通過ObjectListTableProvider中的方法追加或設(shè)置到提供器的數(shù)據(jù)列表中,為JSF表格組件提供數(shù)據(jù)綁定。ObjectListTableProvider提供了一系列的方法和屬性實(shí)現(xiàn)表格組件的各種綁定及數(shù)據(jù)處理方法,(包括:數(shù)據(jù)的增、刪、改方法,數(shù)據(jù)選擇綁定方法,獲取表格中被選當(dāng)前第1頁1 2