2014-09-02 68 views
0

我有一个窗体,我有一个按钮,当我点击那个按钮,一个对话框打开选择一个值,然后我的对话框关闭。对话框关闭instanciate Bean ViewScoped

但是,这样做我的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> 
+0

如果您重新启动视图范围,则会发生这种情况。如果您告诉JSF创建新视图,它将重新启动。如果你是这样,就会发生从操作方法返回一个字符串进行导航。是你做的吗? – BalusC 2014-09-02 13:40:15

+0

@BalusC我编辑我的帖子,把我的页面代表对话框返回和我的bean方法,openDialog,CloseDialog和设置值。你怎么看? – gustavomr 2014-09-02 13:54:22

+0

@BalusC有什么帮助? – gustavomr 2014-09-08 18:56:18

回答

0

可能需要使用@SessionScoped,当您使用@ViewScoped,并显示一个对话框,你失去了你MB的实际情况。今天我有同样的问题,我解决了使用@PostConstruct(加载我所有的数据)注释的init方法,并使用@SessionScoped进行注释,以使用和管理从init()加载的数据。