Primefaces dataTable sofortige Zeile Auswahl nicht funktioniert

Arbeite ich mit Primefaces 3.5, Spring 3.2, JSF 2.2 und Apache ist mein server.

Mein problem ist, dass immer, wenn ich Sie auf die Zeile, die Zeile select-Ereignis wird nie ausgelöst, in meiner backing-bean und meinem Shop-details-Bedienfeld nie aktualisiert.

Meine backing-bean im request scope und enthält onRowSelect Methode.
Jedoch wenn ich mein backing bean zu Sitzungen Umfang(es erfordert einige änderungen in der backing-bean), instant Zeile die Selektion funktioniert.

Für die Einfachheit meiner Frage, ich habe meine modifizierten code, um nur den relevanten Teil. In meinem param, für den Willen des Tests habe ich nur bestehende Kunden mit ID 35 in meiner test-Seite.

Hier ist mein dialog.xhtml

    <h:form id="customerListingsForm">

    <p:dialog id="manageStoresDialog"
            header="Manage #{manageStoreBean.store.owner.name}'s Stores"
            widgetVar="manageStoresDlg"
            modal="true"
            resizable="false">


        <p:panelGrid id="storePanel" rendered="#{manageStoreBean.owner != null}">
            <f:facet name="header">
                <p:row>
                    <p:column>Store Details</p:column>
                    <p:column>Customer Store List</p:column>
                </p:row>
            </f:facet>

            <p:row>
                <p:column>
                    <p:panelGrid id="storeDetails">         
                        <p:row>
                            <p:column>Name: </p:column>
                            <p:column>
                                <h:inputText value="#{manageStoreBean.store.name}" />
                            </p:column>
                        </p:row>

                        <p:row>
                            <p:column>Description: </p:column>
                            <p:column>
                                <h:inputText value="#{manageStoreBean.store.description}" />
                            </p:column>
                        </p:row>

                        <p:row>
                            <p:column>Short Code: </p:column>
                            <p:column>
                                <h:inputText value="#{manageStoreBean.store.shortCode}" />
                            </p:column>
                        </p:row>

                        <p:row>
                            <p:column>Owner name:</p:column>
                            <p:column>
                                <h:inputText value="#{manageStoreBean.store.owner.name}" readonly="true" />
                            </p:column>
                        </p:row>

                        <p:row>
                            <p:column>Store Type: </p:column>
                            <p:column>
                                <p:selectOneMenu
                                        id="storeTypeSelected"
                                        value="#{manageStoreBean.placeType}"
                                        var="storeType"
                                        style="height:25px"
                                        converter="#{placeTypeConverter}">
                                    <f:selectItems 
                                            value="#{manageStoreBean.typeList}"
                                            var="storeTypeItem"
                                            itemLabel="#{storeTypeItem.code}"
                                            itemValue="#{storeTypeItem}"/>
                                    <p:column>#{storeType.description}</p:column>
                                </p:selectOneMenu>
                            </p:column>
                        </p:row>

                        <p:row>
                            <p:column>Country: </p:column>
                            <p:column>
                                <p:selectOneMenu
                                        id="storeCountrySelected"
                                        value="#{manageStoreBean.country}"
                                        var="country"
                                        style="height:25px"
                                        converter="#{countryConverter}">
                                    <f:selectItems 
                                            value="#{manageStoreBean.countryList}"
                                            var="countryItem"
                                            itemLabel="#{countryItem.isoNumericCode}"
                                            itemValue="#{countryItem}"/>
                                    <p:column>#{country.isoNumericCode}</p:column>
                                </p:selectOneMenu>
                            </p:column>
                        </p:row>

                        <p:row>
                            <p:column>Localisation: </p:column>
                            <p:column>
                                <p:selectOneMenu
                                        id="storeLocalisationSelected"
                                        value="#{manageStoreBean.localisationData}"
                                        var="storeLocal"
                                        style="height:25px"
                                        converter="#{localisationConverter}">
                                    <f:selectItems 
                                            value="#{manageStoreBean.localisationList}"
                                            var="local"
                                            itemLabel="#{local.regionCode}"
                                            itemValue="#{local}"/>
                                    <p:column>#{storeLocal.id} - #{storeLocal.regionCode}</p:column>
                                </p:selectOneMenu>
                            </p:column>
                        </p:row>
                    </p:panelGrid>
                </p:column>

                <p:column style="width:250px">
                    <p:dataTable id="stores" 
                            var="store" 
                            value="#{manageStoreBean.storeList}" 
                            rowKey="#{store.id}"
                            scrollHeight="240"
                            scrollable="true"
                            selectionMode="single"
                            selection="#{manageStoreBean.selectedStore}"
                            lazy="true">

                        <p:ajax event="rowSelect" immediate="true" 
                                listener="#{manageStoreBean.onRowSelect}"
                                update=":customerListingsForm:storeDetails"/>

                        <p:column headerText="Salon Name">
                            <h:outputText value="#{store.name}" />
                        </p:column>
                        <p:column headerText="ID">
                            <h:outputText value="#{store.id}" />
                        </p:column>
                    </p:dataTable>
                </p:column>
            </p:row>
        </p:panelGrid>

        <p:commandButton 
                value="Save"
                action="#{manageStoreBean.saveStore}"
                oncomplete="manageStoresDlg.hide()">
                <f:param name="storeCustomerId" value="#{manageStoreBean.owner.id}" />
        </p:commandButton>

        <h:outputText value="&nbsp;&nbsp;&nbsp;" />

        <p:commandButton 
                value="Close" 
                oncomplete="manageStoresDlg.hide()"/>
    </p:dialog>


    <p:commandButton value="Add Store" 
            oncomplete="manageStoresDlg.show()"
            update=":customerListingsForm:manageStoresDialog"
            process="@this">
        <f:param name="storeCustomerId" value="35" />
    </p:commandButton>


</h:form>

Auch ich bin neu in primefaces und web dev, machte aber eine Menge lernen mich selbst, bevor ich dieses Projekt begann.
Ich verbrachte 2 Tage versucht zu verstehen, was falsch und suchte alle web, aber konnte nicht finden keine Lösung. Vielleicht bin ich etwas fehlt oder falsch sicher nicht.

Jede Hilfe wird sehr geschätzt.

InformationsquelleAutor Alexandr Dunaiskiy | 2013-08-05

Schreibe einen Kommentar