基于
RadioButton/Checkbox的行选择是一个常见的用例,DataTable为此提供了具有列选择模式功能的解决方案。
<p:dataTable var="car" value="#{tableBean.cars}" paginator="true" rows="10"
selection="#{tableBean.selectedCar}">`
<f:facet name="header">
RadioButton Based Selection
</f:facet>
<p:column selectionMode="single" />
<p:column headerText="Model">
<h:outputText value="#{car.model}" />
</p:column>
<p:column headerText="Year">
<h:outputText value="#{car.year}" />
</p:column>
<p:column headerText="Manufacturer">
<h:outputText value="#{car.manufacturer}" />
</p:column>
<f:facet name="footer">
<p:commandButton value="View" image="ui-icon ui-icon-search"
update="displaySingle" oncomplete="singleCarDialog.show()"/>
</f:facet>
</p:dataTable>
我想知道我是否选择第一列的单选按钮,我如何为此获取事件。
- 因为我想在选择第一列或最后一列的单选按钮时禁用按钮。
- 而且我还想在选择列时获取列的索引,现在我用 selectedCar 比较列表,并获取列的索引。它看起来很丑。有人可以帮助我吗?
这是仅适用于 PrimeFaces <= 2.x 的解决方案。
在Primeface的展示柜中有一个很好的例子。有一个属性rowSelectListener
可以像这样使用:
rowSelectListener="#{tableBean.onRowSelect}"
在背豆中:
public void onRowSelect(SelectEvent event) {
FacesMessage msg = new FacesMessage("Car Selected",
((Car) event.getObject()).getModel());
FacesContext.getCurrentInstance().addMessage(null, msg);
}