【发布时间】:2014-09-02 13:10:00
【问题描述】:
我有一个表单,其中有一个按钮,当我单击该按钮时,会打开一个对话框以选择一个值,然后我的对话框关闭。
但是,这样做我的 Bean (@ViewScoped) 被再次调用(重新实例化),我丢失了之前在页面上输入的信息。
我搜索并发现了类似的行为 (http://forum.primefaces.org/viewtopic.php?f=3&t=38235) 但没有答案。
我用构造函数初始化了我的 bean,但我不知道这是否是问题。
@ManagedBean(name="exameBean")
@ViewScoped
public class ExameBean implements Serializable {
public ExameBean(){
exame = new Exame();
exames = new ArrayList<Exame>();
}
public void selecionaPaciente() {
RequestContext.getCurrentInstance().openDialog("/pages/SelecionaPaciente");
}
public void retornaPaciente(Paciente paciente) {
RequestContext.getCurrentInstance().closeDialog(paciente);
}
public void pacienteSelecionado(SelectEvent event) {
exame.setPaciente((Paciente) event.getObject());
}
}
SelecionaPaciente.xhtml
<p:column headerText="Selecionar">
<p:commandButton icon="ui-icon-search" actionListener="#{exameBean.retornaPaciente(lista)}" />
</p:column>
【问题讨论】:
-
如果您重新启动视图范围,就会发生这种情况。如果您告诉 JSF 创建一个新视图,它将重新启动。如果你会发生这种情况。从操作方法返回一个字符串以进行导航。你这样做了吗?
-
@BalusC 我编辑了我的帖子以放置代表对话框返回的页面以及我的 openDialog、CloseDialog 和设置值的 bean 方法。你怎么看?
标签: jsf-2 primefaces