有没有一种方法可以根据用户单击捕获 JSF 数据表中单个单元格的值?
所以我有一个如下图所示的表格,我想通过组合用户选择的每一列的不同单元格来创建一个字符串。用户可以从每一列单击一个或多个单元格,单元格中的值将在文本区域中更新(附加)。
下面是我想在文本框中捕获的输出。
实现这一目标的最佳和最有效的方法是 JSF。不一定是数据表,但我希望你知道我想在这里实现什么。
有没有一种方法可以根据用户单击捕获 JSF 数据表中单个单元格的值?
所以我有一个如下图所示的表格,我想通过组合用户选择的每一列的不同单元格来创建一个字符串。用户可以从每一列单击一个或多个单元格,单元格中的值将在文本区域中更新(附加)。
下面是我想在文本框中捕获的输出。
实现这一目标的最佳和最有效的方法是 JSF。不一定是数据表,但我希望你知道我想在这里实现什么。
我试图让它与数据表一起工作,因为它可以在单元格级别获得价值。我使用 editmode="cell" 所以我可以访问单元级别。inputText 被禁用,因为您不希望用户编辑它。xhtml:
<datatable value"#{yourBean.listValue" var="list" editMode="cell" editable="true"
----and other stuffs----->
<p:ajax event="cellEdit" listener="#{yourBean.selectedCell}"/>
<p:column headerText="A">
<p:cellEditor>
<f:facet name="output">
<p:outputLabel value="#{list.valueA}"/>
</f:facet>
<f:facet name="input">
<p:inputText value="#{list.valueA}" disabled="true"/>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="B">
<p:cellEditor>
<f:facet name="output">
<p:outputLabel value="#{list.valueB}"/>
</f:facet>
<f:facet name="input">
<p:inputText value="#{list.valueB}" disabled="true"/>
</f:facet>
</p:cellEditor>
</p:column>
----and so on---
</p:datatable>
你的豆子:
String result, A, B;
public void selectedCell(CellEditEvent event) {
switch(event.getColumn().getHeaderText()) {
case "A": A= event.getOldValue().toString();
break;
case "B": B = event.getOldValue().toString();
break;
}
result = A + B;
}
如果您希望结果按顺序排列,我会使用 switch-case。有关数据表中单元格编辑的更多信息,请查看此链接