之前第一版有個(gè)問(wèn)題,就是如果進(jìn)行了刪除等操作并立即返回列表頁(yè),被刪除的項(xiàng)還在那,但其實(shí)數(shù)據(jù)庫(kù)已經(jīng)被刪除了,需要做一個(gè)刷新列表操作才可以,本版就是修正此問(wèn)題的。
如果要修正此問(wèn)題,就需要將分頁(yè)的擴(kuò)展代碼也就是第一版中TestBean中的代碼放入業(yè)務(wù)相關(guān)管理Bean中。
頁(yè)面代碼(其中testBean已經(jīng)變成業(yè)務(wù)Managed-bean user了):














































DataPage.java(沒(méi)有變化):





































































PagedListDataModel.java(添加了一些注釋):


















































































































































































































































User中的delete方法:
















User中scrollerPage的相關(guān)代碼:












Faces-config.xml:





有人反映會(huì)出現(xiàn)獲取兩次DataModel的情況,為什么呢?
經(jīng)過(guò)我的測(cè)試,是因?yàn)樵O(shè)置的datatable的rows屬性的值大于了程序中pageSize的值,比如你設(shè)置rows="12",而你的pageSize設(shè)置的是10,那么JSF為了滿足顯示12條得條件,就會(huì)取兩次數(shù)據(jù)集組成一個(gè)12跳得數(shù)據(jù)集顯示出來(lái),所以給定的rows屬性最好可以使用相關(guān)管理bean的pageSize變量,這樣前后臺(tái)統(tǒng)一數(shù)據(jù)條目,提高性能和可操作性。
為了方便大家JSF的項(xiàng)目開(kāi)發(fā),后面我會(huì)推出一套我自己寫(xiě)的一個(gè)基于JSF的框架,當(dāng)然此框架是基于實(shí)際項(xiàng)目成功實(shí)施后提取出來(lái)的,主要是簡(jiǎn)化了對(duì)表單的操作,增加一些常用的工具套件,例如分頁(yè),驗(yàn)證器等等。對(duì)表單操作部分的簡(jiǎn)化主要體現(xiàn)在:每種控件都可以和固定的模型綁定,這樣操作模型就可以做到對(duì)前臺(tái)控件的控制,比如后臺(tái)取值可以使用attributes.get("username"),設(shè)置前臺(tái)控件值可以使用attributes.put("username","admin"),對(duì)選擇控件操作也更加簡(jiǎn)便,當(dāng)使用put的方法的時(shí)候,前臺(tái)會(huì)自動(dòng)選擇到那項(xiàng),更重要的是這些簡(jiǎn)化不需要你寫(xiě)程序代碼,寫(xiě)一些簡(jiǎn)單的配置文件即可,而且選擇項(xiàng)不僅可以設(shè)置在配置文件中,還可以通過(guò)數(shù)據(jù)庫(kù)等其他數(shù)據(jù)源獲取,大大提高開(kāi)發(fā)效率。
---------------------------------------------------------
專注移動(dòng)開(kāi)發(fā)
Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian