2016-03-19 21 views
0

我正在JSF 2.2中的一個簡單的項目,但我有一些問題之間瀏覽的一些頁面。在項目中,我有一個通用模板,所有視圖都是該通用模板的模板客戶端。導航使用託管的豆

這是我有麻煩的觀點:

<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> 

在命令按鈕我調用從託管bean的方法的動作(塔爾託管bean具有我打電話其他方法更改頁面和他們工作得很好,但是這種方法犯規):

(管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"; 
    } 

} 

所以方法「註冊」工作正常,頁面更改,但方法「irRegisterView」不導航到「registroCView」頁面。

有人知道它發生了什麼嗎?

謝謝!

回答

1

我可以'評論,所以我寫這個答案。

  • 我看到你的bean是SessionScoped。您需要實施Serializable,因爲SessionScoped bean在一段時間後會被鈍化。
  • 你有一個表格LayoutGeneral.xhtml?如果沒有,這個代碼將永遠不會工作,因爲一個commandButton需要在一個表單中。
  • 爲什麼你將該方法稱爲屬性?在JSF 2.2和EL 2.3中,你可以調用這樣的方法:#{comunidadBean.isRegisterView()}
  • 單擊按鈕時是否拋出一些異常?如果是,粘貼堆棧跟蹤。
+1

非常感謝!問題在於commandButton不在表單內!我不知道它必須是這樣! –