Java 如何在h:dataTable中实现行编号
我有一个带有分页的JSF表Java 如何在h:dataTable中实现行编号,java,jsf,jsf-2,Java,Jsf,Jsf 2,我有一个带有分页的JSF表 历史中心 № 挑选 帐户会话ID 用户ID 活动开始时间 活动结束时间 活动 #{status.index+1+i.firstRow} $(“tr”)。不是(':first')。悬停( 函数(){ $(this.css(“背景”,“#707070”); }, 函数(){ $(this.css(“背景”和“”); } ); 函数高亮显示(参数){ var row=jQuery(param.parent().parent().chil
历史中心
№
挑选
帐户会话ID
用户ID
活动开始时间
活动结束时间
活动
#{status.index+1+i.firstRow}
$(“tr”)。不是(':first')。悬停(
函数(){
$(this.css(“背景”,“#707070”);
},
函数(){
$(this.css(“背景”和“”);
}
);
函数高亮显示(参数){
var row=jQuery(param.parent().parent().children();
row.toggleClass('highlited');
}
我创建了简单的行计数示例,只是为了用非常简单的html表表示行数。在第二个表中,分页工作正常,但我不知道如何在
h:dataTable
中实现ui:repeat
,以实现行计数。我如何实现这一点?我不确定我是否理解正确。你只是想把行编号
然而,我认为这并不像你想象的那么容易。h:dataTable实际上不支持这个。混合使用h:dataTable和ui:repeat似乎是完全错误的方法(如果我理解正确的话)
你可以:
- 使用t:dataTable(来自Tomahawk:)。在这里,您可以使用rowIndexVar属性,如下所示:
然后将DataWrapper列表传递给JSF,而不是直接传递给您的模型。当然,您需要首先在服务层的某个位置设置索引<t:dataTable rowIndexVar="row" value="#{someBean.value}"> <h:column> <h:outputText value="#{row + 1}"/> </h:column> </t:dataTable>
#{table.rowIndex+SessionsController.firstRow+1}
...
是不必要的DataWrapper
不是干货,已经存在了javax.faces.model.DataModel
,它还有一个getRowIndex()
。它被UIData
组件在封面下使用。我会这样问你:我有这个变量“firstRow”,我从分页中得到它。每次此变量包含第一行的编号时。所以我只需要在一行中完成这项工作:但问题是每次在JSF页面上得到10+1是的,但我有一个自定义分页。如果我打开分页的第二页,会发生什么?我将再次从1开始?然后添加页面的第一行。我明白你的意思。我这样编辑代码:现在它工作起来简单多了。非常感谢。
public class DataWrapper{
private int index;
private Object model;
// getter and setter
...
}