<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 170  文章 - 536  trackbacks - 0
    <2005年12月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    我參與的團(tuán)隊(duì)

    隨筆分類(103)

    搜索

    •  

    積分與排名

    • 積分 - 415102
    • 排名 - 135

    最新評論

    閱讀排行榜

         對于大多數(shù)Web應(yīng)用,分頁都是必不可少的功能,當(dāng)然在JSF中也一樣,我在這里用兩篇文章介紹兩種方法來展示一下,如何在JSF中實(shí)現(xiàn)分頁。本文假定你已經(jīng)對JSF有了一些簡單的了解,懂得基本配置和使用,并建立起一個(gè)blank項(xiàng)目。

         MyfacesApache基金會中的一個(gè)一級項(xiàng)目,除了實(shí)現(xiàn)JSF標(biāo)準(zhǔn)外,做了很多的擴(kuò)展工作,在Myfaces包中有一個(gè)擴(kuò)展包Tomahawk,我們將主要使用其中的兩個(gè)Component實(shí)現(xiàn)分頁:一個(gè)是<t:dataTable>,另一個(gè)是<t:dataScroller>,在第一篇里面,我們簡易的組合這兩個(gè)Component來實(shí)現(xiàn)一種簡單,但并不高效的分頁。

         下面的例子來自于Myfaces-Sample,我省去了其中和分頁邏輯無關(guān)的內(nèi)容,詳細(xì)的例子可以下載Myfaces-Sample包或者訪問http://www.irian.at/myfaces/home.jsf 查看。

         第一部分:dataTable

    <t:dataTable id="data"
                      var
    ="car"
                      value
    ="#{pagedSort.cars}"
                      rows
    ="10">
        ……
    </t:dataTable>

    在這一部分中,dataTable綁定了一個(gè)backing bean - pagedSort中的cars屬性,我們可以在這個(gè)屬性中加入數(shù)據(jù)訪問邏輯,從數(shù)據(jù)庫或者其他來源取得用于顯示的數(shù)據(jù)。比如我們可以通過Hibernate獲取一個(gè)List,其中包含有我們用于顯示的POJOs

    注意,dataTable中的rows屬性指的是每頁的行數(shù),是必須指定的,否則是無法進(jìn)行分頁的,如果在項(xiàng)目中會使用固定行數(shù)的分頁,建議把這個(gè)值寫在BaseBackingBean中,并暴露一個(gè)property,供頁面調(diào)用,所以每次在頁面中就可以這么寫#{backingBean.pageSize}

    第二部分:dataScroller

        <t:dataScroller id="scroll_1"
                            for
    ="data"
                            fastStep
    ="10"
                            paginator
    ="true"
                            paginatorMaxPages
    ="9">
                
    <f:facet name="first" >
                    
    <t:graphicImage url="images/arrow-first.gif" border="1" />
                
    </f:facet>
                
    <f:facet name="last">
                    
    <t:graphicImage url="images/arrow-last.gif" border="1" />
                
    </f:facet>
                
    <f:facet name="previous">
                    
    <t:graphicImage url="images/arrow-previous.gif" border="1" />
                
    </f:facet>
                
    <f:facet name="next">
                    
    <t:graphicImage url="images/arrow-next.gif" border="1" />
                
    </f:facet>
                
    <f:facet name="fastforward">
                    
    <t:graphicImage url="images/arrow-ff.gif" border="1" />
                
    </f:facet>
                
    <f:facet name="fastrewind">
                    
    <t:graphicImage url="images/arrow-fr.gif" border="1" />
                
    </f:facet>
            
    </t:dataScroller>


        這里定義了我們用于分頁的<t:dataScroller>,最主要的是配置該分頁Component針對哪個(gè)dataTable進(jìn)行分頁的“for”屬性,該屬性與dataTable綁定,并對其進(jìn)行分頁,在這里,綁定了第一部分中的id="data"dataTable,下面有很多的<t:facet>是指定分頁的導(dǎo)航樣式的,這里使用了圖片作為導(dǎo)航,可以把他們改成文字形式的導(dǎo)航。

        當(dāng)然這只是最簡單,也是一種不推薦的分頁方式,因?yàn)樵诿看芜M(jìn)行分頁的時(shí)候,將會從數(shù)據(jù)庫中取回所有的記錄放入List中,然后,dataScroller在對這個(gè)List進(jìn)行分頁,如果在數(shù)據(jù)量很大的情況下,這種方式顯然是不符合要求的,假設(shè)每條記錄占用1k內(nèi)存,數(shù)據(jù)庫中有100萬條記錄,每次要把這個(gè)List全部讀取出來將占用1G內(nèi)存。我們需要一種Load on demand方式的讀取,也就是只在需要查看某頁的時(shí)候讀取該頁的數(shù)據(jù)。

        另外一方面,JSF的生命周期中有多個(gè)階段會調(diào)用到#{pagedSort.cars}中對應(yīng)的方法,如果在這里調(diào)用了數(shù)據(jù)訪問邏輯,就會在只顯示一次頁面的情況下進(jìn)行多次數(shù)據(jù)庫操作,也是相當(dāng)?shù)暮馁M(fèi)資源的。

        所以我們需要有更好的分頁方式去解決以上問題,下一篇我將介紹另一種方法以改善這些問題。

    posted on 2005-12-29 20:55 steady 閱讀(12472) 評論(2)  編輯  收藏 所屬分類: JSF & Myfaces

    FeedBack:
    # re: 在JSF中實(shí)現(xiàn)分頁(一) 2005-12-29 22:57 ulation
    分頁有很多複雜的情況需要根據(jù)業(yè)務(wù)不同需要加以考慮:
    1,是否能一次取出所有數(shù)據(jù)
    2,是否需要考慮多個(gè)用戶同時(shí)修改帶來的問題
    。。。  回復(fù)  更多評論
      
    # re: 在JSF中實(shí)現(xiàn)分頁(一) 2007-03-29 10:51 3l
    暈了,你的論壇總是注冊不了,說注冊碼有誤!  回復(fù)  更多評論
      
    主站蜘蛛池模板: 久久精品国产亚洲AV天海翼| 两个人看www免费视频| 免费一看一级毛片人| 成人无码区免费A∨直播| 久久av无码专区亚洲av桃花岛| 欧美a级在线现免费观看| ssswww日本免费网站片| 亚洲黄色免费网站| 免费永久在线观看黄网站| 久久香蕉国产线看免费| 亚洲精品蜜夜内射| 亚洲国产成人高清在线观看 | 成人A片产无码免费视频在线观看| 亚洲视频在线观看| 情侣视频精品免费的国产| 久久精品私人影院免费看| 美国毛片亚洲社区在线观看| 亚洲成熟xxxxx电影| 国产成人免费a在线资源| 久久国产乱子伦免费精品| 精品在线视频免费| 亚洲制服在线观看| 亚洲AV无码成人精品区蜜桃| 国产jizzjizz视频免费看| 日本XXX黄区免费看| baoyu116.永久免费视频| 色婷婷六月亚洲综合香蕉| 亚洲综合久久久久久中文字幕| 亚洲精品一级无码鲁丝片| 国产日本一线在线观看免费| 永久免费AV无码网站国产| 日韩在线视频播放免费视频完整版| 亚洲午夜精品在线| 亚洲av鲁丝一区二区三区| 国产精品亚洲产品一区二区三区 | 国产成人综合亚洲AV第一页 | 久久青青草原亚洲av无码app| 亚洲人成网站在线观看青青 | 亚洲一级视频在线观看| 亚洲成av人片天堂网| 国产亚洲美女精品久久久|