PrimeFaces dialog lazy loading (dynamic="true") funktioniert nicht?
Habe ich vor kurzem geändert alle meine Bohnen aus RequestScoped
zu ViewScoped
. Plötzlich, das verzögerte laden von Dialogen funktioniert nicht. Ich bin mit PrimeFaces
JSF-Bibliothek.
<html>
<h:body>
<f:view>
<h:form>
<p:commandButton id="addId" value="Add" title="Add" type="button" onclick="dlgMultiFileSelect.show();"/>
...
</h:form>
<p:dialog header="Dialog" widgetVar="dlgMultiFileSelect" modal="true" resizable="true" dynamic="true">
<ui:include src="/dialogs/media_browser.xhtml"/>
</p:dialog>
</f:view>
</h:body>
</html>
Scheint, wie dynamic="true"
funktioniert nicht, da der backing-bean in media_browser.xhtml
wird sofort initialisiert, und nicht, wenn die Schaltfläche geklickt wird.
Mache ich etwas falsch?
Verwendung Von PrimeFaces 3.5.0.
Vielleicht hat zu tun mit PARTIAL_STATE_SAVING? stackoverflow.com/questions/5541813/...
InformationsquelleAutor Danijel | 2013-05-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
gefunden haben, einige ziemlich einfache Problemumgehung:
Let ' s Zitat BalusC die Antwort auf diese Frage:
Überspringen ausführen <ui:include> wenn Elternteil UI-Komponente wird nicht gerendert
Über seine ersten Vorschlag:
<c:if>
rund um die<ui:include>
Teil.Also zuerst fügen Sie einige neue Methode, um Ihre Bohne. (kann auch nützlich sein, in einigen Anwendungs-scoped bean für die Wiederverwendung)
Dann umschließen Ihre
<ui:include>
innen folgende<c:if>
:Also auf die Ladezeit der Seite, die Anfrage ist nicht ajax... und auf der anderen ajax-requests auf der base-Seite den dialog nicht aktualisiert werden...
Aber wenn Sie Ihre trigger-dialog
und aktualisieren Sie den Inhalt, es wird endlich gerendert werden!
Bitte beachten Sie folgende änderungen: Die p:dialog id, p:commandButton-update und p:commandButton oncomplete
InformationsquelleAutor someuser
Passenden tag ui:include wird verarbeitet früher im Zyklus, und daher ist es immer initialisiert. Wenn Sie möchten, aktualisieren Sie den Inhalt des Dialogfelds auf die Schaltfläche klicken, müssen Sie dies mit dem update="id des Dialogfelds" auf deine Befehlsschaltfläche. Sie können für Ihre Benutzeroberfläche:enthalten, so dass die Seite nicht geladen-zunächst.
InformationsquelleAutor Murali D