JSF: Dynamische "Seite einschließen" in primefaces dialog

Ich möchte den Inhalt einer primefaces dialog von einer anderen Seite mit ui:include. Die enthaltene Seite muss eingestellt werden dynamisch, je nachdem, auf welche Schaltfläche der Benutzer geklickt hat. Ich benutzt die sehr hilfreiche Antwort von BalusC von JSF dynamischen include mit Ajax-request.

Funktioniert es sehr gut, wie im Beispiel. Aber Probleme kommen, wenn ich eine p:dialog anstelle von h:panelGroup:

<h:form>
  <f:ajax render=":dialog">
    <p:commandButton value="page1" action="#{productBean.setDialogPage('/page1.xhtml')}" oncomplete="dialogWidget.show()"></p:commandButton>
    <p:commandButton value="page2" action="#{productBean.setDialogPage('/page2.xhtml')}" oncomplete="dialogWidget.show()"></p:commandButton>
  </f:ajax>
</h:form>
<p:dialog id="dialog" widgetVar="dialogWidget" >
        <ui:include src="#{productBean.dialogPage}" />
</p:dialog>

1. problem: Manchmal habe ich auf eine Taste mehrere Male, bevor Dialogfeld wird angezeigt. Es scheint nicht zu Folgen ohne Muster, aber ist ein zufälliger Effekt. Manchmal muss ich zweimal klicken, manchmal muss ich klicken Sie viermal auf die Taste.

2. problem: Manchmal, der dialog erscheint nicht mit der ausgewählten Seite, aber mit dem alten. Wenn ich schließen-dialog und wählen Sie wieder, die aktuelle Seite geladen ist. Es scheint ein random-Effekt, zu.

Warum bekomme ich diese Probleme mit dialog?

Ich gedebuggt Berufung getDialogPage() und setDialogPage() in der Bean. Ich bemerkte, dass wenn alles OK war, die Anruf-Sequenz wurde die get-SET-get-get-get. Aber wenn ich den alten, falschen Seite aus, die Folge war " get-get-get-SET-bekommen.

InformationsquelleAutor Alexej Detert | 2014-06-02

Schreibe einen Kommentar