这是我的片段:
<ui:fragment rendered="#{}">
<ui:include src="../includes/top.xhtml"/>
</ui:fragment>
我的LoginController将重定向到扩展MainController具有布尔方法的页面home.html所以当我尝试调用它时,我得到一个因为,正如我注意到的,Java 首先加载 html 以查看它是否正在调用任何 Java 类所以当我尝试访问(从 HomeController 扩展,尚未调用)我得到这个空指针showComponent
mainController.showComponent()
nullPointerException
mainController
. 如果设置了 maisController,如何检查片段内部?
这是我到目前为止尝试过的
<ui:fragment rendered="#{not empty mainController ? true : false}">
它总是返回true
。
这是我的 MainController 类:
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()
是从返回会话对象属性loginController