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