Фильтр - представление при отображении ошибок [/Error.xhtml] java.lang.NullPointerException

У меня есть следующий контекст:

страница в формате HTML, как эта:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://xmlns.jcp.org/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:p="http://primefaces.org/ui">
<h:head>
    <title>My Event</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
</h:head>

<body>
    <f:event listener="#{filterEventCreator.check}" type="preRenderView" />
    ...

Это фильтр EventCreator:

public void check(ComponentSystemEvent event) {
    if(amIComingFromDispatcher()){
        SYSO_Testing.syso("FilterEventCreator in this case, everything it's ok");
        sessionUtility.setNotComingFromDispatcher();
    }
    else{
        try {
            SYSO_Testing.syso("I'm not coming from redirect");
            sessionUtility.sessionLogout();
            response.sendRedirect(errorPath);
        }
        catch (IOException ex) {
            Logger.getLogger(FilterEventCreator.class.getName()).log(Level.SEVERE, null, ex);
        }
}
private boolean amIComingFromDispatcher() {
    if(this.loggedUser==null)return false;
    return sessionUtility.getComingFromDispatcher();
}

Где sessionUtility является следующим:

@Named
@SessionScoped
public class SessionUtility implements Serializable {

private String loggedUserName, loggedUserPassword;
private int errorCode, eventID;
private boolean error, comingFromDispatcher;

@PostConstruct
public void init() {
    error = false;
    comingFromDispatcher = false;
}

public void addUser(String username) {
    loggedUserName = username;
    SYSO_Testing.syso("User added in cache");
}

public String getLoggedUser() {
    return loggedUserName;
}

public void sessionLogout() {
    SYSO_Testing.syso("starting logout from Session bean");
    FacesContext context = FacesContext.getCurrentInstance();
    HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
    loggedUserName = null;
    error = false;
    request.getSession().invalidate();

}

public void setError(int value) {
    errorCode = value;
    error = true;
}

public boolean isAnError() {
    return error;
}

public int getError() {
    return errorCode;
}

public void showedError() {
    error = false;
}


public void setNotComingFromDispatcher() {
    comingFromDispatcher = false;
}

public void setComingFromDispatcher() {
    comingFromDispatcher = true;
}

public boolean getComingFromDispatcher() {
    return comingFromDispatcher;
}

Случается так, что, если я подключаюсь непосредственно к странице xhtml, фильтр понимает, что я не зарегистрирован и не получаю перенаправление, но при попытке перенаправления возникает следующая ошибка: Ошибка рендеринга View[/Error.xhtml] java.lang.NullPointerException

Я отлаживаю этот проект, и ни ответ, ни какая-либо переменная, за исключением loggedUser, не равны нулю. Я благодарен всем, кто может мне помочь.

0 ответов

Другие вопросы по тегам