【发布时间】:2014-12-17 00:07:48
【问题描述】:
我正在使用 PrimeFaces 5。
我想在按下按钮时打开一个对话框。
<p:commandButton value="add upload" actionListener="#{theForm.openUpload}" >
public void openUpload() {
this.item = new Item();
RequestContext.getCurrentInstance().openDialog("uploadForm");
}
对话框中会有一个保存按钮来保存输入。
<h:commandButton value="#{text['button.add']}" id="add" styleClass="btn btn-default" actionListener="#{theForm.confirmAdd}"/>
public void confirmAdd() {
RequestContext.getCurrentInstance().closeDialog("uploadForm");
}
我的托管 bean 是 @ViewScoped。如果对话框像 PrimeFaces 对话框框架那样位于外部文件中,命令按钮会破坏视图范围吗?每当我单击“添加上传”按钮时,就会再次调用@PostConstruct 方法,就像丢失了范围一样。
official blog 的评论部分说它不会破坏视图范围,但 here the forum a core developer 说 openDialog() 创建一个新视图,因此它会破坏视图范围。
有人可以确认吗?
【问题讨论】:
-
您使用哪个版本的 JSF?众所周知,
javax.faces.bean.ViewScoped在某些情况下会中断。 (另请参阅 balusc.blogspot.de/2010/06/…)如果您使用 CDI,则应切换到javax.faces.view.ViewScoped- 这按预期工作。
标签: jsf primefaces dialog view-scope