基于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>
我想知道我是否选择了第一列的radioButton,我是如何得到一个事件的。
这是PrimeFaces <= 2.x的解决方案。
在Primeface's showcase有一个很好的例子。有一个属性rowSelectListener
可以像这样使用:
rowSelectListener="#{tableBean.onRowSelect}"
在支持bean中:
public void onRowSelect(SelectEvent event) {
FacesMessage msg = new FacesMessage("Car Selected",
((Car) event.getObject()).getModel());
FacesContext.getCurrentInstance().addMessage(null, msg);
}