使用p:dataTable进行行编号

Chu*_*ham 7 mysql primefaces jsf-2 jpa-2.0

我有这个问题:

SELECT @rownum:=@rownum+1 'no', m.title, m.author, REPLACE(SUBSTRING_INDEX(m.content, ' ', 20), '<br>', ' '), m.viewed, m.hashid FROM book m, (SELECT @rownum:=0) r WHERE m.lang = ?1 AND m.title like CONCAT('%',?2,'%') ORDER BY m.title asc
Run Code Online (Sandbox Code Playgroud)

@rownum:=@rownum+1MySQL的查询结果编号第Primefaces的一部分,目前没有一个设施,以显示一个编号列.

有没有办法显示Primefaces列编号而不必这样做@rownum:=@rownum+1

如果没有,我可以使用纯粹的CriteriaBuilder方法构造上述查询吗?

Mat*_*ndy 38

我不太确定您是否需要"编号列"或"列编号".我假设第一个;-)

你不能用rowIndexVar吗?Primefaces的医生说:

rowIndexVar =引用正在处理的rowIndex的变量名.

这对我有用:

<p:dataTable value="#{testBean.selectOptions}" rowIndexVar="rowIndex" var="item">
    <p:column headerText="#">
        #{rowIndex+1}
    </p:column>
    <p:column headerText="Option">
        #{item}
    </p:column>
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)

+1表示从1开始.

更新:

此代码生成:

在此输入图像描述

  • 你的解决方案有效 谢谢堆.现在我知道rowIndexVar用于什么!;)还有一件事:我只需要将`SUBSTRING_INDEX`转换为更简化的东西,以便我可以使用CriteriaBuilder方法 - 因为我无法从JEE 6 Tutorial示例中看到如何定义自定义的SQL SELECT字符串对于CriteriaBuilder方法. (2认同)