5

我有一个使用 JSF2.0 的数据表,其中有单选按钮显示的行

<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方法没有被调用。这可能是什么原因?

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

非常感谢任何帮助。

更新 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}" />  
4

2 回答 2

18

Primefaces 3.4.2rowSelectListener中没有这样的属性

改为使用<p:ajax event="rowSelect",就像在陈列柜中一样

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

  • 行选择电台
  • 行选择复选框
  • 行取消选择复选框
  • rowDblselect

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

于 2012-12-25T10:09:20.233 回答
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();
        }
于 2017-04-14T17:27:13.550 回答