이 나의 조각이다 mainController.showComponent()
nullPointerException
내가 알기로 Java가 html을 먼저로드하여 어떤 Java 클래스를 호출하는지 알기 때문에 mainController
(아직 호출되지 않은 HomeController에서 확장 됨)에 액세스하려고 할 때이 null 포인터를 얻습니다.JSF EL은 조건
. 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
다음 요청에서 손실 될 것이기 때문에 그렇지 않습니까? 세션 객체에 액세스해야합니까? – Gerep
세션 맵에 분명히 나와 있기 때문에 전체 세션에서 사용할 수 있습니다. 이것은'LoginController'가 실제로'@ManagedBean @ SessionScoped' 일 때 사실입니다. – BalusC
'loginController.isLoggedIn'을 사용하면 작동하지 않습니다. – Gerep