Primefaces rowselect事件在版本3.3中不起作用

时间:2012-06-07 10:51:04

标签: primefaces

我有这个代码。它应该在用户选择一行并关闭对话框后触发rowSelect事件。它在我更新到primfaces 3.3之前工作得很好(我有ver3.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> 

4 个答案:

答案 0 :(得分:7)

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

  • onSelectCheckBox
  • onUnselectCheckbox
  • onSelectRadio

因此,rowSelectrowUnselect不会被解雇。

答案 1 :(得分:3)

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

答案 2 :(得分:2)

dataTable应该被<h:form>包围。另外你应该将以下属性添加到p:dataTable(我不知道是否所有这些都是必需的,但是我拥有它们并且它工作正常)。
- selectionMode="single"
- rowKey="#{receiver.id}“(将”id“替换为Receiver的实际ID属性)
- selection="#{transactionController.selectedReceiver"

答案 3 :(得分:0)

我是stackoverflow的新用户,但我经常使用它,因为我看到这是Prime发生的事情! ;-)
好的,我目前正在将RichFaces 3.3.3 JSF 1.2项目迁移到Mojarra 2.1.7(SNAPSHOT 20120206)和PrimeFaces 3.3,这是IMHO对JSF的启示。
长话短说,我正在寻找半个星期内在主题中提到的这个错误,我试着回到PF 3.2和tataaaa rowSelect,现在所有其他实现工作。
我有一个带有数据表和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了! 不要让我失望! ; - )

更新:
解决方案是使用lazy = true,因为PF 3.3。我在PrimeFaces问题跟踪器中看到了问题2993