Jsf DataTable.rowIndex始终返回0
我做得不对的是什么Jsf DataTable.rowIndex始终返回0,jsf,datatable,jsf-2.2,Jsf,Datatable,Jsf 2.2,我做得不对的是什么 @Named("utilityController") @RequestScoped public class UtilityController { public DataModel<Result> getResultSample() { Result[] resultSample = new Result[11]; //Populate the array return new ArrayDataMode
@Named("utilityController")
@RequestScoped
public class UtilityController {
public DataModel<Result> getResultSample() {
Result[] resultSample = new Result[11];
//Populate the array
return new ArrayDataModel<>(resultSample);
}
}
@Named(“实用控制器”)
@请求范围
公共类实用控制器{
公共数据模型getResultSample(){
结果[]结果示例=新结果[11];
//填充数组
返回新的ArrayDataModel(ResultsSample);
}
}
在JSF中:
<h:dataTable id="sampleResult" value="#{utilityController.resultSample}" var="item" styleClass="table table-bordered table-striped table-hover table-condensed" >
<h:column>
<f:facet name="header">SN</f:facet>
#{utilityController.resultSample.rowIndex}
</h:column>
<h:column>
<f:facet name="header">Subject</f:facet>
#{item.subject.name}
</h:column>
....
</h:dataTable>
锡
#{utilityController.ResultsSample.rowIndex}
主题
#{item.subject.name}
....
正如上面所示,rowIndex始终返回0。请帮我指出我做错了什么
我做得不对的是什么
在getter方法中创建模型。永远不要那样做。所有getter方法应如下所示:
public DataModel<Result> getResultSample() {
return resultSample;
}
至于您的具体功能需求,您也可以只参考而不将值包装在数据模型中
public Result[] getResults() { // Consider List<Result> instead.
return results;
}
<代码>公共结果[] GETRESULTS(){//RealStlist,取而代之。
返回结果;
}
#{table.rowIndex+1}
#{result.subject.name}
注意,我用1增加了它,因为它是基于0的,而人类期望的是基于1的索引
另见:
UIData
链接。所有getXxx()
方法也可以通过这种方式使用。我还添加了第三个“参见”链接,解释了binding
属性。再次感谢@BalusC,这些链接非常有用
public Result[] getResults() { // Consider List<Result> instead.
return results;
}