Primefaces行选择事件在3.3版中不起作用

Primefaces行选择事件在3.3版中不起作用,primefaces,Primefaces,我有这个密码。在用户选择行并关闭对话框后,它应该触发rowSelect事件。在我升级到primfaces 3.3之前,它工作得很好(我有3.2版)。我在控制台中没有任何异常,当我调试时,我看到该方法没有调用。我不知道从哪里开始解决这个问题。有人能帮我吗 <p:dialog id="dlg" closable="true" header="New reciever" widgetVar="receiverListDlg" visible="false" modal="true">

我有这个密码。在用户选择行并关闭对话框后,它应该触发rowSelect事件。在我升级到primfaces 3.3之前,它工作得很好(我有3.2版)。我在控制台中没有任何异常,当我调试时,我看到该方法没有调用。我不知道从哪里开始解决这个问题。有人能帮我吗

<p:dialog id="dlg" closable="true" header="New reciever" widgetVar="receiverListDlg" visible="false" modal="true">
        <p:dataTable var="reciever" value="#{transactionController.recieverList}">
            <p:ajax event="rowSelect" listener="#{transactionController.onRowSelect}" update=":form" onsuccess="receiverListDlg.hide()" />
            <f:facet name="header">  
            Previouse recievers for #{customer.firstName}   
        </f:facet>
            <p:column selectionMode="single" />

            <p:column headerText="#{msg.havale_customer_firstname}">
                <h:outputText value="#{reciever.firstName}" />
            </p:column>

            <p:column headerText="#{msg.havale_customer_lastName}">
                <h:outputText value="#{reciever.lastName}" />
            </p:column>

            <p:column headerText="#{msg.havale_customer_phoneNr}">
                <h:outputText value="#{reciever.phoneNr}" />
            </p:column>

        </p:dataTable>
    </p:dialog> 

#{customer.firstName}以前的收件人

数据表应该被
包围。此外,您还应该向p:dataTable添加以下属性(我不知道是否所有属性都是必需的,但我都有,而且工作正常)。
-
selectionMode=“single”

-
rowKey=“#{receiver.id
}”(用receiver的实际id属性替换'id')

-
selection=“#{transactionController.selectedReceiver”

作为用户,我不熟悉stackoverflow,但我经常使用它,因为我看到Prime在这里发生了一些事情!;-)
好的,我目前正在将RichFaces 3.3.3 JSF 1.2项目迁移到Mojarra 2.1.7(快照20120206)和PrimeFaces 3.3,这是对JSF的启示。
长话短说,我花了半个星期的时间搜索主题中提到的这个错误,我尝试退回到PF 3.2和tataaaa rowSelect,我的所有其他实现现在都可以工作了。
我有一个带有datatable和selectionMode=“multiple”以及ajax事件的简单表单:

        <h:form>
        <p:dataTable id="massnahmenAuswahl"
            value="#{massnahmenController.massnahmen}"
            var="eineMassnahme"
            selection="#{massnahmenController.massnahmenSelected}"
            rowKey="#{eineMassnahme.massnahme}">
            <p:ajax event="rowSelect"
                listener="#{massnahmenController.rowSelected}" process="@this"
                update="@this" />
            <p:ajax event="rowUnselect"
                listener="#{massnahmenController.rowUnselected}" process="@this"
                update="@this" />
            <p:ajax event="toggleSelect"
                listener="#{massnahmenController.rowToggleSelected}" process="@this"
                update="@this" />
            <p:column selectionMode="multiple" style="width:18px"
                disabledSelection="#{!login.editable}" styleClass="checkbox" />
            <p:column>
                <h:outputText escape="false" value="#{eineMassnahme.zeile}" />
            </p:column>
            <p:column>
                <h:outputText escape="false" value="#{eineMassnahme.bezeichnung}" />
            </p:column>
            <p:column>
                <fiona:labelImgGA for="#{eineMassnahme.massnahme}" />
            </p:column>
            <p:column>
                <p:selectBooleanCheckbox value="#{eineMassnahme.vorjahr}"
                    disabled="true" />
            </p:column>
            <f:facet name="footer">
                <p:commandButton value="Speichern"
                    action="#{massnahmenController.speichern}"
                    disabled="#{!login.editable}" process="@this" update="@form" />
                <p:spacer/>
                <p:commandButton value="Weiter"
                    action="#{massnahmenController.saveAndNext}"
                    disabled="#{!login.editable}" process="@this" update="@form" />
            </f:facet>
        </p:dataTable>
    </h:form>

这个问题在不久的将来会得到解决吗? 直到现在,我真的和PF在一起! 别让我失望!;-)

更新:

解决方案是从PF 3.3开始使用lazy=true。我在PrimeFaces问题跟踪器的问题中看到过它!

我认为您应该使用“rowSelectRadio”ajax事件。

现在PrimeFaces提供了一些新的ajax事件:

        <h:form>
        <p:dataTable id="massnahmenAuswahl"
            value="#{massnahmenController.massnahmen}"
            var="eineMassnahme"
            selection="#{massnahmenController.massnahmenSelected}"
            rowKey="#{eineMassnahme.massnahme}">
            <p:ajax event="rowSelect"
                listener="#{massnahmenController.rowSelected}" process="@this"
                update="@this" />
            <p:ajax event="rowUnselect"
                listener="#{massnahmenController.rowUnselected}" process="@this"
                update="@this" />
            <p:ajax event="toggleSelect"
                listener="#{massnahmenController.rowToggleSelected}" process="@this"
                update="@this" />
            <p:column selectionMode="multiple" style="width:18px"
                disabledSelection="#{!login.editable}" styleClass="checkbox" />
            <p:column>
                <h:outputText escape="false" value="#{eineMassnahme.zeile}" />
            </p:column>
            <p:column>
                <h:outputText escape="false" value="#{eineMassnahme.bezeichnung}" />
            </p:column>
            <p:column>
                <fiona:labelImgGA for="#{eineMassnahme.massnahme}" />
            </p:column>
            <p:column>
                <p:selectBooleanCheckbox value="#{eineMassnahme.vorjahr}"
                    disabled="true" />
            </p:column>
            <f:facet name="footer">
                <p:commandButton value="Speichern"
                    action="#{massnahmenController.speichern}"
                    disabled="#{!login.editable}" process="@this" update="@form" />
                <p:spacer/>
                <p:commandButton value="Weiter"
                    action="#{massnahmenController.saveAndNext}"
                    disabled="#{!login.editable}" process="@this" update="@form" />
            </f:facet>
        </p:dataTable>
    </h:form>
  • onSelectCheckBox
  • ONONSELECTCHECKBOX
  • 昂塞勒克特拉迪奥酒店

因此,在您的情况下,
rowSelect
rownselect
将不会被激发。

这是有效的,但我希望当您选择单选按钮时,它会激发它在上一节中所做的rowSelect事件。对于单选按钮选择,您还需要包括这些属性。您添加了它们吗?表是否被h:form包围?仍然行选择未激发?是的,但在3.3中它不起作用。我可以不使用单选按钮进行选择。它不需要周围的表单仅selectionMode=“single”selection=“#{transactionController.selectedReceiver”周围的表单用于允许ajax在支持bean中执行方法。您尝试过版本3.3.1吗?它包括一些错误修复。这些事件称为rowSelectCheckbox、rowUnselectCheckbox和rowSelectRadio。天哪,我花了整整一个下午的时间来做这件事!您在哪里找到的?这个问题实际上并不相关。您的问题是PF 3.3的问题如果使用复选框选择,则建议使用rowSelectCheckbox而不是rowSelect。