如何从Java访问Primefaces DataTable

时间:2017-07-26 13:15:18

标签: java jsf primefaces datatable

我想从Java中的PrimeFaces DataTable组件中获取不同的行。我可以使用findComponent从ViewRoot中找到DataTable。现在,当我查看组件(使用调试器)时,我可以看到3个孩子,孩子们。这些子项是我的DataTable的第一行中的3列,但我无法访问其他行。

My Table XHTML的结构如下:(示例)

<h:form id="form">
     <p:dataTable id="table" var="t">
          <p:column>
               <p:inputNumber id="inputOne" />
          </p:column>
          <p:column>
               <p:inputNumber id="inputTwo" />
          </p:column>
          <p:column>
               <p:inputNumber id="inputThree" />
          </p:column>
     </p:dataTable>
</h:form>

这就是我在Java代码中获取DataTable的方法:

final DataTable table = (DataTable) getFacesContext().getViewRoot().findComponent("form:table");

table.getChildren(); // 3 Children, even if the DataTable got 10 Rows.

如何访问DataTable中的其他行?我只把第3行中的3列作为孩子。

试图尽可能地通过调试器,但我找不到其他行/组件。

1 个答案:

答案 0 :(得分:0)

我认为您可以使用p:dataTable的rowIndexVar="rowId"属性。您可以使用它来传递所选行的ID。

您可以添加一个包含链接的列,使该行“无效”:

<p:column>
   <h:commandLink action="#{managedBeanActionToMakeRowInvalid}">
     <f:param name="rowIndex" value="#{rowId}" />
   </h:commandLink>
</p:column>