2016-03-19 17 views
0

Ich arbeite an einem einfachen Projekt in JSF 2.2, aber ich habe ein Problem beim Navigieren zwischen einigen Seiten. Im Projekt habe ich eine allgemeine Vorlage und alle Ansichten sind Vorlagenclients dieser allgemeinen Vorlage.Navigation mit verwalteten Beans

dies ist die Ansicht, dass ich habe Probleme mit:

<h:body> 

    <ui:composition template="./LayoutGeneral.xhtml"> 

     <ui:define name="content"> 
      <p:commandButton value="Registrar Comunidad" action="#{comunidadBean.irRegisterView}"/> 
     </ui:define> 

    </ui:composition> 

</h:body> 

In der Aktion auf den Befehl i eine Methode aus der Managed Bean aufrufen (Thar Managed Bean andere Methode, die ich rufe zu ändern sie die Seite und sie funktionieren gut, aber diese Methode tut):

(Managed Bean)

@ManagedBean 
@SessionScoped 
public class ComunidadBean {  
    private String idComunidad; 
    private String idPresidente; 
    private String calle; 
    private int numero; 
    private int nVecinos; 

    @EJB 
    private ComunidadDAO ejb; 

    public String register(){ 
     if(ejb.realizaRegistro(this)){ 
      return "principalView"; 
     } else{ 
      FacesMessage fm = new FacesMessage ("No se pudo registrar"); 
      FacesContext.getCurrentInstance().addMessage("msg", fm); 
      return null; 
     } 
    } 

    public String irRegisterView(){ 
     return "registroCView"; 
    } 

} 

Also die Methode "Register" funktioniert gut und die Seite ändern, aber die Methode "IrRegisterView" navigiert nicht zur "RegistroCView" -Seite.

Hat jemand eine Idee von dem, was passiert?

Danke!

Antwort

1

Ich kann 'kommentieren, also schreibe ich dies als Antwort.

  • Ich sehe, dass Ihre Bohne SessionScoped ist. Sie müssen Serializable implementieren, da eine SessionScoped-Bean nach einiger Zeit passiviert wird.
  • Haben Sie ein Formular in LayoutGeneral.xhtml? Wenn nicht, wird dieser Code nie funktionieren, da ein commandButton innerhalb eines Formulars sein muss.
  • Warum nennen Sie die Methode als eine Eigenschaft? In JSF 2.2 und EL 2.3 können Sie Methoden wie folgt aufrufen: #{comunidadBean.isRegisterView()}.
  • Wird beim Klicken auf die Schaltfläche eine Ausnahme ausgelöst? Wenn ja, fügen Sie den Stack-Trace ein.
+1

Vielen Dank !! Das Problem war, dass der commandButton nicht in einem Formular war! Ich wusste nicht, dass es so sein muss! –

Verwandte Themen