JSF @ViewScope, PrimeFaces <p:dialog-und <ui:include
Habe ich: - Taste auf die Hauptseite und dialog.
Einen haben möchte, der ViewScope Lebenszyklus von managed bean (NewDialog.java), was führen Sie den dialog.
In anderen Worten: erstellen Sie die NewDialog bean, während drücken der Taste, und zerstören, während das schließen-dialog.
Aber NewDialog bean erzeugt hat, beim laden der Hauptseite.
Wie zu zwingen, bean erstellt, nur, wenn Sie eine Taste drücken?
<ui:composition
<h:form id="mainForm">
<p:commandButton value="New Dialog"
onclick="newDialogVar.show();"/>
</h:form>
<ui:include src="#{viewScopedBean.page}.xhtml" />
</ui:define>
</ui:composition>
Enthalten Seite:
<ui:composition ..
<f:view >
<h:form id="formId"
<p:dialog appendToBody="false"
dynamic="true"
modal="true"
widgetVar="newDialogVar">
<p:commandButton value="Ok"
actionListener="#{newDialog.ok}"/>
</h:form>
</p:dialog>
</f:view>
</ui:composition>
Bean:
@ManagedBean
@ViewScoped
public class NewDialog implements Serializable{
@PostConstruct
protected void postConstruct() {
LOG.info("----------------- PostConstruct -------------------");
}
}
Benutze ich: PrimeFaces 3.5 mit Mojarra 2.1.22
Vielen Dank im Voraus!
P. S. : laut Forschung, die ich hinzufügen:
<context-param>
<param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
<param-value>false</param-value>
</context-param>
zu web.xml.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist das erwartete Verhalten. Die
<ui:include>
läuft während der Ansicht der Erstellung, nicht bei der view-render-Zeit. Also, auch wenn Sie bedingt Rendern eines seiner Eltern, es wird noch zu bewerten seinsrc
Attribut beim Bau/Wiederherstellung der Sicht. In der Tiefe hintergrund Erklärung von "Ansicht erstellen" versus "view render time" kann gefunden werden in dieser Antwort: JSTL in Facelets-JSF2... macht das Sinn?Ihre konkrete funktionale Anforderung ist unklar, so kann ich nicht arbeiten den richtigen Ansatz im detail, aber Fakt ist, Sie müssen sich für einen alternativen Ansatz, wenn Sie wollen, verschieben sich die Schaffung von der Bohne zur Anzeige des dialogs. Vielleicht müssen Sie nach split die Bohne in zwei Teile, einer mit der include-Pfad und die anderen halten das Dialogfeld Daten?
Ich habe eine situacion wie Sie zu zeigen, eine Grafik im inneren dialog mit dieser Schaltfläche rufen Sie einen methot festlegen src dialog:
dies ist der dialog (auf der gleichen Seite)
managedbean serviciosMB:
dies ist grafMontosServicios.xhtml
managed bean, wo die Grafik eingebaut ist
}