私は持っています:メインページとダイアログのボタン。
Aは、ダイアログを実行するマネージドBean(NewDialog.java)のViewScopeライフサイクルを持ちたいと考えています。つまり、ボタンを押しながら NewDialog Bean を再作成し、ダイアログを閉じるときに破棄します。
しかし、メインページの読み込み中に NewDialog Bean が作成されました。ボタンを押したときにのみ作成されるBeanを強制する方法は?
<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>
含まれるページ:
<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>
豆:
@ManagedBean
@ViewScoped
public class NewDialog implements Serializable{
@PostConstruct
protected void postConstruct() {
LOG.info("----------------- PostConstruct -------------------");
}
}
私が使用するもの: Mojarra 2.1.22 を搭載した PrimeFaces 3.5
前もって感謝します!
PS : 調査によると、次のように追加します。
<context-param>
<param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
<param-value>false</param-value>
</context-param>
web.xml に。