2016-06-28 11 views
0

ich als managedproperty anderen Bohne eine Bohne haben:Primefaces neue Bean-Instanz nach der Navigation

public class Bean1 
{ 
    @ManagedProperty(value = "#{bean2}") 
    private Bean2 bean2; 

    .... 
} 

Bean2 korrekt erstellen, aber die Navigation von bean1.xhtml erstellen Sie eine andere Instanz von Bean2 bean2.xhtml, so dass ich verlor jeden Parameter, der von Bean1 eingestellt wurde. Bean1 und Bean2 sind @ViewScoped.

Wo liege ich falsch?

+0

siehe mein aktuelles ans –

Antwort

0

Bean1.java

import javax.annotation.PostConstruct; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.ManagedProperty; 
import javax.faces.bean.SessionScoped; 
import javax.faces.view.ViewScoped; 

@ManagedBean 
@ViewScoped 
public class Bean1 { 

    @ManagedProperty(value = "#{bean2}") 
    private Bean2 bean2; 

    @PostConstruct 
    public void init() { 
     System.out.println("in bean one...."); 
    } 

    public Bean2 getBean2() { 
     return bean2; 
    } 

    public void setBean2(Bean2 bean2) { 
     this.bean2 = bean2; 
    } 

    public String changetoview() { 
     return "bean2"; 
    } 
} 

Bean2.java

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 
import javax.faces.view.ViewScoped; 

@ManagedBean 
@ViewScoped 
public class Bean2 { 

    private String nameOfBean; 

    public String getNameOfBean() { 
     return nameOfBean; 
    } 

    public void setNameOfBean(String nameOfBean) { 
     this.nameOfBean = nameOfBean; 
    } 

} 

bean1.xhtml

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html"> 
<h:head> 
    <title>bean1</title> 
</h:head> 
<h:body> 
    <h:form> 
     <h:inputText value="#{bean1.bean2.nameOfBean}"></h:inputText> 
     <h:commandButton action="#{bean1.changetoview}" 
      value="Login"></h:commandButton> 
    </h:form> 
</h:body> 
</html> 

Bean2.xhmtl

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html"> 
<h:head> 
    <title>bean2</title> 
</h:head> 
<h:body> 
    <h:form>dd 
     <h:outputLabel value="#{bean2.nameOfBean}"></h:outputLabel> 
    </h:form> 
</h:body> 
</html> 

Es funktioniert an meinem Ende, es funktioniert auch, wenn ich die @ViewScope zu @SessionScope zu ändern. Wenn Sie weitere Informationen wünschen, schreiben Sie Ihre Frage mit mehr Informationen über Ihren Code um. Danke