jsf中的分页

时间:2010-05-10 14:09:17

标签: jsf

我想就此提出您的意见和建议。我正在为jsf中的页面做分页。数据表通过“绑定”属性绑定到Backing Bean属性。我有2个布尔变量来确定是否渲染'Prev'和'Next'Button - 它显示在数据表下方。当单击“上一个”或“下一个”按钮时,在支持bean中,我获得绑定的dataTable属性,通过该属性,我获得数据表的“first”和“rows”属性并相应地更改。我在页面中显示5行。请评论并建议是否有更好的方法。顺便说一句,我对任何JSF组件库都不感兴趣,但只坚持使用核心html渲染工具包。

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";
}

2 个答案:

答案 0 :(得分:1)

  

请评论并建议是否有更好的方法。

嗯,这没什么可回答的。如果你要求的话,至少不是“我”的方式。长话短说:Effective datatable paging and sorting。你只需要战斧(面对它,它有它的优点)。但是如果你已经使用JSF2 + Facelets而不是JSF1 + JSP,那么你实际上也可以使用ui:repeat@ViewScoped代替t:dataListt:saveState

答案 1 :(得分:0)

我们可以使用 'Repeat' 组件 - 这类似于 Primefaces 中的 dataList 或 dataTable 组件

<p:repeat id="repeatComponent" var="education" value="#{backingBean.educationList}" emptyMessage="No records found">
    <h:panelGroup>
        <p:outputLabel for="center" value="Education Center:" />
        <br />
        <h:panelGroup>
            <h:outputText id="center" value="#{education.centerName}">
            </h:outputText>
        </h:panelGroup>
    </h:panelGroup>
 </p:repeat>

这类似于java中的for循环

var - 这充当循环迭代器 值 - 接受列表对象 emptyMessage - 接受字符串值,当传递的列表对象为空时显示