6

我有这个代码。在用户选择一行并关闭对话框后,它应该触发 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

4 回答 4

7

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

  • onSelectCheckBox
  • onUnselectCheckbox
  • onSelectRadio

因此rowSelectrowUnselect在您的情况下不会被解雇。

于 2012-07-26T01:00:05.220 回答
3

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

于 2012-06-17T00:48:22.047 回答
2

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

于 2012-06-07T11:52:42.290 回答
0

作为用户,我是stackoverflow的新手,但我经常使用它,因为我看到Prime在这里发生了一些事情!;-)
好的,我目前正在将 RichFaces 3.3.3 JSF 1.2 项目迁移到 Mojarra 2.1.7(SNAPSHOT 20120206)和 PrimeFaces 3.3,这是恕我直言对 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一起去!不要让我失望!;-)

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

于 2012-06-15T15:06:41.970 回答