2010-05-10 88 views
5

我想你的意見和建議。我正在爲jsf中的頁面進行分頁。數據表通過「綁定」屬性綁定到Backing Bean屬性。我有2個布爾變量來決定是否渲染'Prev'和'Next'按鈕 - 它顯示在數據表下面。當單擊「Prev」或「Next」按鈕時,在backing bean中,我獲得綁定的dataTable屬性,並通過它獲取數據表的「first」和「rows」屬性並相應地進行更改。我在頁面中顯示5行。請評論並建議是否有更好的方法。順便說一句,我對任何JSF組件庫不感興趣,但只堅持核心HTML渲染工具包。分頁jsf

public String goNext() 
{ 

    UIData htdbl = getBrowseResultsHTMLDataTable1(); 

    setShowPrev(true); 
    //set Rows "0" or "5" 
    if(getDisplayResults().size() - (htdbl.getFirst() +5)>5) 
    { 
     htdbl.setRows(5);//display 5 rows 
    }else if (getDisplayResults().size() - (htdbl.getFirst() +5)<=5) { 
     htdbl.setRows(0);//display all rows (which are less than 5) 
     setShowNext(false); 
    } 
    //set First 
    htdbl.setFirst(htdbl.getFirst()+5); 
    return "success"; 
} 

public String goPrev() 
{ 

    setShowNext(true); 
    UIData htdbl = getBrowseResultsHTMLDataTable1(); 

    //set First 
    htdbl.setFirst(htdbl.getFirst()-5); 

    if(htdbl.getFirst()==0) 
    { 
     setShowPrev(false); 
    } 

    //set Rows - always display 5 
    htdbl.setRows(5);//display 5 rows 

    return "success"; 
} 

回答

1

請發表評論,並建議如果有什麼更好的方法。

那麼,這並沒有太多的答案。如果你要求的話,至少不是「我」會這樣做的方式。長話短說:Effective datatable paging and sorting。你只需要戰斧(面對它,它有它的優勢)。但是如果您已經使用JSF2 + Facelets而不是JSF1 + JSP,那麼您實際上也可以使用ui:repeat@ViewScoped而不是t:dataListt:saveState