我想就此提出您的意见和建议.我正在为jsf中的页面做分页.数据表通过"绑定"属性绑定到Backing Bean属性.我有2个布尔变量来确定是否渲染'Prev'和'Next'Button - 它显示在数据表下方.时,无论是"上一个"或"下一步"按钮被点击时,在支持bean我得到的结合的dataTable属性和通过其我得到的"第一"和"行" DataTable的属性和相应地改变.我在页面中显示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";
}
Run Code Online (Sandbox Code Playgroud)
如果有更好的方法请评论和建议。
好吧,这没什么好回答的。如果你要求的话,至少“我”不会这么做。长话短说:有效的数据表分页和排序。你只需要战斧(面对现实,它有它的优点)。但如果您已经使用 JSF2+Facelets 而不是 JSF1+JSP,那么实际上您也可以使用ui:repeatand@ViewScoped来代替t:dataListand t:saveState。