Starten Dialoge mit PrimeFaces über <p:dialog> und <ui:include>
Ich bin mit PrimeFaces UI-Bibliothek für meine web-UI-Projekt.
Ich habe eine manage_watchfolder.xhtml
Seite hat eine Taste, und diese Schaltfläche startet einen dialog:
<p:commandButton value="Add" oncomplete="dlgEditWF.show()"
update=":editWFForm" process="@none"/>
In diesem gleichen Datei habe ich dlgEditWF
aus edit_watchfolder.xhtml
:
<p:dialog id="editDialog" widgetVar="dlgEditWF" modal="true"
resizable="true" onShow="showHideActionLocation();">
<ui:include src="edit/edit_watchfolder.xhtml"/>
</p:dialog>
Das problem ist, dass ich nicht wollen edit_watchfolder.xhtml
werden geladen, bevor die Schaltfläche angeklickt wird. Allerdings edit_watchfolder.xhtml
ist "geladen", im selben moment manage_watchfolder.xhtml
erstellt. Also, alle die Bohnen aus aufgerufen edit_watchfolder.xhtml
erstellt, initialisiert, etc., auch Benutzer, vielleicht wird eigentlich nie klicken Sie auf die Schaltfläche. Das erzeugt viel overhead, und macht die Ausführung langsam.
Kann ich diese vermeiden?
InformationsquelleAutor Danijel | 2013-02-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie mit der "dynamic" - Attribut des
p:dialog
. Haben Sie einen Blick auf die primefaces Dokumentation.Sie sind herzlich willkommen!
Anderes problem jetzt: das erste mal, dass ich starten Sie den dialog - backing bean bekommt doppelt angelegt. Nachdem ich das Dialogfeld zu schließen, und starten Sie es wieder schafft bean nur einmal, und weiterhin erstellen Sie einmal, wie es sein sollte und arbeitet dann ok. So problem ist nur, zum ERSTEN mal starten. Warum wird die bean erstellt zweimal in dieser ersten Zeit?
InformationsquelleAutor Nicolas Labrot
Dies ist "by design" für die Gründe erläutert, die in dieser Antwort: Überspringen ausführen <ui:include> wenn Elternteil UI-Komponente wird nicht gerendert.
In Ihrem besonderen Fall, Ihre beste Wette ist, lassen Sie die Bohnen nicht initialisiert standardmäßig und führen Sie die Initialisierung während der Befehlsschaltfläche Aktion-Methode statt.
Ich bin mir nicht sicher, wie Sie Sie Formen, die eine problem-rufen Sie den dialog Initialisierung durch die Methode Aktion nur.
Weil meine Eltern Seite muss die bean initialisiert. Mein pop-up-Seite braucht, die wurde nicht initialisiert. Wenn ich bewegen Sie die Initialisierung aus contructor zu initDialog(), dann, wie wird mein übergeordneten Seite bekommen initialisiert bean?
Nur tun übergeordneten Seite Initialisierung in Bohnen - (post -) Konstruktor-und dialog-Initialisierung in der action-Methode? Sie müssen nicht ein und dieselbe Methode.
Problem ist, dass, wenn dialog erzeugt bean wird es tun parent-Seite der Initialisierung. Ich kann nicht überspringen übergeordnete Seite die Initialisierung in diesem Fall (post konstruieren, wie du sagst), kann ich das?
InformationsquelleAutor BalusC