我想从 Java 中的 PrimeFaces DataTable 组件获取不同的行。我可以使用 findComponent 从 ViewRoot 找到 DataTable。现在,当我查看组件(使用调试器)时,我可以看到 3 个子组件,即 Children。这些子项是我的数据表第一行中的 3 列,但我无法访问其他行。
我的表 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.
如何访问数据表中的其他行?我只将第一行中的 3 列作为子项。
尝试尽可能通过调试器,但我找不到其他行/组件。
最佳答案
我认为您可以使用 p:dataTable 的 rowIndexVar="rowId"
属性。您可以使用它来传递所选行的 id。
您可以添加带有链接的列以使该行“无效”:
<p:column>
<h:commandLink action="#{managedBeanActionToMakeRowInvalid}">
<f:param name="rowIndex" value="#{rowId}" />
</h:commandLink>
</p:column>
关于java - 如何从 Java 访问 Primefaces 数据表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45328149/