onSeow在Primefaces数据表中选择radiobutton

时间:2012-12-25 07:48:08

标签: jsf-2 primefaces radio-button

我有一个使用JSF2.0的数据表,其中我有使用radiobutton显示的行

<p:dataTable id="dataTable" var="emp" lazy="true" value="#{req.lazyModel}"
            paginator="true" rows="10" 
            paginatorTemplate="{CurrentPageReport}  
                    {FirstPageLink} {PreviousPageLink} 
           {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
       rowsPerPageTemplate="5,10" 
           selection="#{req.selectedEmp}"
            rowKey="#{req.empNo}" 
       rowSelectListener="#{req.onRowSelect}">


 <p:column selectionMode="single" style="width:18px" />

在Bean中我有

public void onRowSelect(SelectEvent event) { 
       System.out.println("row "+((Request) event.getObject()).getEmpNo());  

    } 

但是没有调用onRowSelect方法。这可能是什么原因?

我对radiobutton的想法是当用户点击radiobutton时,我想在主数据表下方显示一个数据表,其中包含所选行的详细信息。

非常感谢任何帮助。

更新1

<p:dataTable id="dataTable" var="emp" lazy="true" value="#{req.lazyModel}"
            paginator="true" rows="10" 
            paginatorTemplate="{CurrentPageReport}  
                    {FirstPageLink} {PreviousPageLink} 
           {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
       rowsPerPageTemplate="5,10" 
           selection="#{req.selectedEmp}">


 <p:column selectionMode="single" style="width:18px" />
 <p:ajax event="rowSelect" listener="#{reqMB.onRowSelect}" />  

2 个答案:

答案 0 :(得分:15)

Primefaces 3.4.2

中没有此类属性rowSelectListener

使用<p:ajax event="rowSelect"代替,就像展示

一样

对于广播/复选框等...这些是可用的<p:ajax事件

  • rowSelectRadio
  • rowSelectCheckbox
  • rowUnselectCheckbox
  • rowDblselect

查看展示(在页面上搜索p:ajax) DataTable - Selection

答案 1 :(得分:1)

适用于旧版Primefaces。

         <p:dataTable id="updateBanData"
                                 var="banSummary"
                                 value="#{sponsorBanMBean.sponsorBanForm.banSummaries}"
                                 styleClass="appTbl"
                                 selection="#{sponsorBanMBean.sponsorBanForm.selectedBanSummary}"
                                 emptyMessage="#{msgs.noRecordsFound}" selectionMode="single"
                    >



        <p:ajax event="rowSelect" listener="#{sponsorBanMBean.onUpdateBanRowSelect}"
                                update="updateSponsorShipBanDetailPanel"/>
    </p:p:dataTable>

     <p:outputPanel id="updateSponsorShipBanDetailPanel">
show your selection details. 

    </p:outputPanel>

Manged Bean内部的Java代码。

    public void onUpdateBanRowSelect(SelectEvent selectEvent) {
            logger.logMethodStartAsDebug();
            BanSummary selectedBanSummaryEvent = (BanSummary) selectEvent.getObject();

            if(selectedBanSummaryEvent != null){
                sponsorBanForm.setUpdateSponsorShipBanDetail(true);
            }
            logger.logMethodEndAsDebug();
        }