p:datatable中的RadioButton行选择事件

问题描述 投票:0回答:1

基于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,我是如何得到一个事件的。

  • 因为我想在选择第一列或最后一列的radioButton时禁用某个按钮。
  • 而且我还希望在选择列时获取列的索引,现在我使用selectedCar来比较列表,并获取列的索引。它看起来很丑。任何人都可以帮助我?
jsf radio-button primefaces
1个回答
1
投票

这是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);  
}  
© www.soinside.com 2019 - 2024. All rights reserved.