2012-04-26 48 views
1

は、これが私の断片である:JSF EL条件

<ui:fragment rendered="#{}"> 
    <ui:include src="../includes/top.xhtml"/> 
</ui:fragment> 

マイLoginControllerが、私はこれを呼び出すしようとするので、ブール方法showComponentを持ってメインコントローラを拡張ページhome.htmlにリダイレクトされますmainController.showComponent()私は、nullPointerExceptionを取得します。なぜなら、Javaクラスを呼び出すかどうかを調べるためにまずJavaがhtmlをロードして、mainController(これはHomeControllerから拡張されています。これはまだ呼び出されていませんでした)

。 maisControllerが設定されている場合、フラグメントの内部をチェックする方法は?ここで

は、私はそれは常にtrueを返し、これまで

<ui:fragment rendered="#{not empty mainController ? true : false}">

を試してみたものです。

package com.erp3.gui.controllers; 

import java.io.IOException; 
import javax.faces.bean.ManagedBean; 
import javax.faces.context.ExternalContext; 
import javax.faces.context.FacesContext; 

@ManagedBean 
public class MainController { 

    public LoginController loginController; 
    public ExternalContext ec; 

    public void checkUserSession() throws IOException { 
     ec = FacesContext.getCurrentInstance().getExternalContext(); 
     loginController = (LoginController) ec.getSessionMap().get("loginController"); 
     loginController = (LoginController) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("loginController"); 
     if (loginController == null || !loginController.getIsLoggedIn()) { 
      ec.redirect(ec.getRequestContextPath() + "/views/login.html"); 
     } 
    } 

    public Boolean showComponent() { 
     return this.loginController.getIsLoggedIn(); 
    } 
} 

私の方法showComponent()は、あなたがshowComponentを呼び出すときloginControllerがnullであると思われloginController

答えて

関連する問題