未为p:datatable jsf primefaces调用rowSelect事件

未为p:datatable jsf primefaces调用rowSelect事件,jsf,events,select,primefaces,datatable,Jsf,Events,Select,Primefaces,Datatable,我使用的是PrimeFaces5.2和JSF2.2.6 我试图从datatable中选择一行并填充panelgrid。问题是在选择行时没有调用onRowSelect方法 以下是datatable的代码: <h:body styleClass="mainPageBody" > <div class="projectTable"> <p><h:outputText value="#{msg['form.currentProjects']}" st

我使用的是PrimeFaces5.2和JSF2.2.6

我试图从datatable中选择一行并填充panelgrid。问题是在选择行时没有调用onRowSelect方法

以下是datatable的代码:

<h:body styleClass="mainPageBody" >
<div class="projectTable">  
    <p><h:outputText value="#{msg['form.currentProjects']}" styleClass="mainPageProjectsTableTitle" /></p>
    <h:form id="formTable" >
        <p:dataTable id="transactionsTable" var="data" value="#{transactionsPage.ttList}" widgetVar="projectData" 
                     rowKey="#{data.id}"
                     draggableColumns="true" 
                     resizableColumns="true" liveResize="true" emptyMessage="#{msg['form.noTransactionsFound']}" rows="20"
                     selectionMode="single" selection="#{transactionsPage.selectedTransaction}"
                     filteredValue="#{transactionsPage.fitleredttList}" paginator="true" paginatorPosition="both" paginatorTemplate="{CurrentPageReport} {RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
                     >

            <p:ajax event="rowSelect" listener="#{transactionsPage.onRowSelect}" update="formTabs:tabs:form2:panel"/>

            <p:column id="transIdField" filterStyleClass="transIdFilter" filterBy="#{data.id}" headerText="#{msg['form.transId']}"  filterMatchMode="contains" styleClass="mainPageCompanyColumn">
                 <h:outputText value="#{data.id}"/>
            </p:column>
            <p:column id="uicNumberField" filterStyleClass="uicNumberFilter" filterBy="#{data.uicNumber}" sortBy="#{data.uicNumber}" headerText="#{msg['form.uicNumber']}"  filterMatchMode="contains" styleClass="mainPageCompanyColumn">
                 <h:outputText value="#{data.uicNumber}"/>
            </p:column>
            </p:dataTable>
    </h:form>
</div>
问题是以下代码

<p:ajax event="rowSelect" listener="#{transactionsPage.onRowSelect}" update="formTabs:tabs:form2:panel"/>
未调用onRowSelect方法

有人知道问题出在哪里吗

编辑:

答:使用p:ajax调用onRowSelect或setSelectedTransaction方法似乎无法成功,即使我向onRowSelect传递了一个参数

所以,我尝试使用f:ajax。仅当与参数一起传递时才调用onRowSelect,但参数始终为null。所以这个方法对我没有用处,但是setSelectedTransaction也被调用了,所以问题解决了

然后,我必须更新面板,这是使用render for f:ajax完成的,而不是只用于p:ajax的更新

最后的ajax事件调用如下所示:

<f:ajax event="rowSelect" render="formTabs:tabs:form2:panel"/>

检查所有这些:简化您的代码。。。而且,您正在向bean类中的onRowSelect方法传递周界,在jsf页面中,您正在调用没有周界的istener={transactionsPage.onRowSelect}……我认为您应该发送类似于istener={transactionsPage.onRowSelectdata.id}的rowKey值…我没有尝试,所以我不确定,但您可以尝试…只更新与您的问题相关的代码。
<p:ajax event="rowSelect" listener="#{transactionsPage.onRowSelect}" update="formTabs:tabs:form2:panel"/>
<f:ajax event="rowSelect" render="formTabs:tabs:form2:panel"/>