與Swing類似的面向?qū)ο蠼M件模型
Wicket中的頁(yè)面及其他組件都是支持封裝、繼承和事件觸發(fā)的Java對(duì)象。
易于開(kāi)發(fā)
因?yàn)閃icket合成了Java和HTML,在使用Wicket開(kāi)發(fā)應(yīng)用的過(guò)程中,您可以最大限度地發(fā)揮您所掌握的Java知識(shí),而且可以最大限度地發(fā)揮您最喜歡的HTML編輯器在開(kāi)發(fā)過(guò)程中的作用。
關(guān)注點(diǎn)的分離
Wicket并沒(méi)有將標(biāo)簽(比如HTML的相關(guān)標(biāo)簽)與Java代碼混合,而且也沒(méi)有在標(biāo)簽文件中增添任何特殊的語(yǔ)法。HTML和Java 的領(lǐng)域是不互相干擾的,它們只是通過(guò)Wicket Id來(lái)關(guān)聯(lián),Wikcet Id在HTML中表現(xiàn)為標(biāo)簽的屬性,在Java代碼中則表現(xiàn)為組件的屬性。因?yàn)閃icket中的HTML文件是純粹的HTML文件,Wicket中的Java代碼是純粹的Java代碼,編程者和設(shè)計(jì)者可以最大程度地獨(dú)立完成工作,而不需要依賴于任何特定的工具。
安全
Wicket在默認(rèn)設(shè)置的條件下是安全的。URL不對(duì)外公布任何敏感信息,而且所有組件的路徑都是相對(duì)于會(huì)話周期的,脫離了會(huì)話周期這些路徑將變得無(wú)效。如果需要在會(huì)話周期間共享信息,則必須做一些特殊的工作才能達(dá)到。在下一個(gè)版本的 Wicket中,有計(jì)劃將URL加密功能添加到框架中去以此來(lái)支持符合要求更高的安全特性。
透明的且具備伸縮性的集群支持
所有基于Wicket的應(yīng)用不需要額外的設(shè)置就可以自動(dòng)支持集群。一旦系統(tǒng)的瓶頸經(jīng)評(píng)估被發(fā)現(xiàn),那么Wicket將啟動(dòng)頁(yè)面狀態(tài)的復(fù)制。Wicket的下一個(gè)版本將對(duì)具備零狀態(tài)伸縮性的客戶端模型提供支持。
顯式的“后退按鈕”問(wèn)題支持
Wicket支持可配置的頁(yè)面版本管理。當(dāng)用戶提交一個(gè)表單,而后使用瀏覽器的后退按鈕來(lái)回到以前訪問(wèn)過(guò)的頁(yè)面時(shí),Wicket 可以將頁(yè)面對(duì)象的狀態(tài)恢復(fù)過(guò)來(lái),并且將頁(yè)面以原來(lái)的面貌呈現(xiàn)出來(lái)。這就意味著您只需要花一點(diǎn)功夫就可以構(gòu)建出支持“ 后退按鈕”的應(yīng)用。
可復(fù)用的組件
在Wicket中,構(gòu)建可復(fù)用的組件十分的簡(jiǎn)單。您不僅可以使用Java中的關(guān)鍵字extends來(lái)從現(xiàn)有的組件繼承而構(gòu)建新的組件,而且可以使用Panel組件來(lái)組織一批組件來(lái)構(gòu)建可復(fù)用的組件單元。簡(jiǎn)單且靈活的、支持本地化的表單校驗(yàn)在Wikcet中編寫(xiě)和使用校驗(yàn)器也是十分的簡(jiǎn)單。而且校驗(yàn)錯(cuò)誤消息的定義和本地化也是十分簡(jiǎn)單的工作。
類型安全的會(huì)話周期
Wicket消除了手動(dòng)管理HttpSession屬性的需求。頁(yè)面和組件對(duì)象被顯式地存儲(chǔ)在會(huì)話周期中,您的應(yīng)用也可以構(gòu)建屬性類型安全的會(huì)話周期的子類。存儲(chǔ)在會(huì)話周期中的所有對(duì)象可以自動(dòng)地發(fā)布到集群中。
可自定義的工廠類
Wicket非常具有擴(kuò)展性。許多操作可以通過(guò)工廠類或者工廠方法來(lái)實(shí)現(xiàn)自定義。
可分離的模型
Wicket中的模型對(duì)象在集群系統(tǒng)中的內(nèi)存和網(wǎng)絡(luò)占用可以說(shuō)是輕量級(jí)的。當(dāng)一個(gè)模型正在被使用時(shí),它將被裝載,主要通過(guò)從存儲(chǔ)單元來(lái)獲得數(shù)據(jù)并激活模型。當(dāng)這個(gè)模型對(duì)象已經(jīng)不再被使用時(shí),臨時(shí)信息可以被重置,這樣就可以消減對(duì)象占用的內(nèi)存數(shù)量。
邊框組件
Wicket的邊框組件可以使得頁(yè)面的裝飾符合可重用的規(guī)則。這對(duì)一般的導(dǎo)航結(jié)構(gòu)和布局顯得十分的有用。
對(duì)HTML所有的基本特性提供支持
Wicket支持圖像標(biāo)簽、鏈接、表單以及其他一切您在Web應(yīng)用開(kāi)發(fā)中可以用到的特性。
對(duì)屬性的可編程操作。
Wicket組件可以使用編程的方式來(lái)修改任何HTML標(biāo)簽的屬性。
自動(dòng)的轉(zhuǎn)換
一旦表單校驗(yàn)完成,模型可以使用Wicket的轉(zhuǎn)換器來(lái)完成更新。大部分的轉(zhuǎn)換器都是系統(tǒng)自帶的,而編寫(xiě)新的轉(zhuǎn)換器也是很簡(jiǎn)單的事情。
動(dòng)態(tài)的圖像
Wikcet使得圖像的使用、共享和生成十分的簡(jiǎn)單。動(dòng)態(tài)圖像可以簡(jiǎn)單地通過(guò)實(shí)現(xiàn)繪制(paint)方法來(lái)建立。
可分頁(yè)的ListView
Wicket中的ListView十分的強(qiáng)大。您可以將任何組件嵌入到ListView組件的行中,甚至將ListView進(jìn)行循環(huán)嵌套也可以。 PageableListView支持大型數(shù)據(jù)列表的分頁(yè)導(dǎo)航。
樹(shù)形組件
具備導(dǎo)航和結(jié)點(diǎn)選擇的樹(shù)形組件。
本地化
HTML頁(yè)面、圖形和字符串都可以實(shí)現(xiàn)本地化。
示例
Wicket有展示其各項(xiàng)功能的數(shù)量巨大的例子。