FullAjaxExceptionHandler не перенаправляет на пользовательскую страницу ошибки (URL остается прежним)

В моем приложении пользователь должен быть перенаправлен на пользовательскую страницу ошибок, когда выдается определенное исключение.

Страница с ошибкой отображается, но URL-адрес не меняется на местоположение страницы с ошибкой.

Ниже приведены соответствующие фрагменты кода.

внутри моего web.xml у меня есть следующие объявления.

<error-page>
    <exception-type>de.mmo.base.util.login.NoSidException</exception-type>
    <location>/error/NoActiveSID.xhtml</location>
</error-page>
<error-page>
    <exception-type>de.mmo.exceptions.NotLoggedInException</exception-type>
    <location>/error/NotLoggedInExc.xhtml</location>
</error-page>
<error-page>
    <error-code>404</error-code>
    <location>/error/error404.xhtml</location>
</error-page>
<error-page>
    <error-code>500</error-code>
    <location>/error/error500.xhtml</location>
</error-page>

В моих Faces-config.xml я попробовал следующие два объявления

<factory>                                                             
    <exception-handler-factory>                                       
        org.omnifaces.exceptionhandler.FullAjaxExceptionHandlerFactory
    </exception-handler-factory>                                  
</factory>

и

<factory>
    <exception-handler-factory>
        de.mmo.test.MyExceptionHandlerFactory
    </exception-handler-factory>
</factory>      

Когда я пытался использовать MyExceptionHandler, я прокомментировал FullAjaxExceptionHandlerFactory.

Ниже приведен код MyExceptionHandler.

public class MyExceptionHandlerFactory extends ExceptionHandlerFactory {

    private ExceptionHandlerFactory parent;

    public MyExceptionHandlerFactory(ExceptionHandlerFactory parent) {
        this.parent = parent;
    }

    @Override
    public ExceptionHandler getExceptionHandler() {
        ExceptionHandler result = parent.getExceptionHandler();
        result = new MyExceptionHandler(result);

        return result;
    }

}        

public class MyExceptionHandler extends FullAjaxExceptionHandler {


    private ExceptionHandler wrapped;

    public MyExceptionHandler(ExceptionHandler wrapped) {
        super(wrapped);
        this.wrapped = wrapped;
    }

    @Override
    public ExceptionHandler getWrapped() {
        return this.wrapped;
    }

    @Override
    protected String findErrorPageLocation(FacesContext context,
        Throwable exception) {
        System.out.println("inside my findErrorPageLocation");
        if(exception instanceof NoSidException) {
            System.out.println("inside exception instanceof NoSidExceptin");
            return "/error/NoActiveSID.xhtml?faces-redirect=true";
    } else {
        return super.findErrorPageLocation(context, exception);
    }
}    

И последнее, что у меня есть, например. класс NoSidExceptino

public class NoSidException extends FacesException {
    private static final long serialVersionUID = -2350480134523249331L;
    public NoSidException(){
        super ("ACHTUNG: SID ist abgelaufen !");
    }
}

Все страницы ошибок находятся в файлах webapp --> error --> *.xhtml.

Мое приложение работает на сервере Glassfish.

Если вам нужна дополнительная информация, я сообщу им :)

спасибо за помощь

----------РЕДАКТИРОВАТЬ--------------------------------------- ------------------------

Я смог решить свою проблему с помощью javascript.

В заголовок страницы с ошибкой вставляю

<script type="text/javascript">
    $(document).load(function() {
    redirectToErrorPage (); 
    });            
</script>

А в теле у меня есть remoteCommand

<h:form>
    <p:remoteCommand name="redirectToErrorPage" action="#{nav.baueNavPfad(pfadKonst.ERROR_NOSID, false)}">
    </p:remoteCommand>
</h:form>

person Arthur Welsch    schedule 16.09.2015    source источник
comment
Это не перенаправление, когда вы вызываете исключение через классическую навигацию или при использовании вызовов Ajax?   -  person SJuan76    schedule 16.09.2015
comment
Привет SJuan76, исключение выдается через вызовы ajax. Для этого я использовал org.omnifaces.exceptionhandler.FullAjaxExceptionHandlerFactory.   -  person Arthur Welsch    schedule 16.09.2015
comment
Для дополнительной информации: в моем web.xml у меня есть следующее объявление ‹параметр-контекста› ‹имя-параметра›javax.faces.PROJECT_STAGE‹/имя-параметра› ‹значение-параметра›Производство‹/значение-параметра› ‹/контекст -парам›   -  person Arthur Welsch    schedule 16.09.2015