JSF неправильное перенаправление при перехвате ViewExpiredException - PullRequest
1 голос
/ 28 ноября 2011

Так что у меня есть обработчик ViewExpiredException и работает нормально. Теперь, когда я запускаю веб-приложение, мой URL выглядит как www.myApp.com/TestFaces/, и это представляет первую страницу, которая является страницей входа в систему. Если по какой-либо причине я покидаю страницу при входе в систему, и срок действия представления истекает, приложение ловит исключение ViewExpiredException и отправляет меня на страницу «ViewExpired», НО URL-адрес остается неизменным www.myApp.com/TestFaces/. На этой странице «ViewExpired» у меня есть commandLink для возврата на страницу входа, которая в значение attrib я помещаю «index.xhtml», НО она не отправляет меня на страницу входа, потому что на странице www.myApp.com/TestFaces/index.xhtml нет, а в www.myApp.com/TestFaces/faces/index.xhtml

Итак, вопросы:

  1. Почему, если я на странице входа, я получаю исключение ViewExpiredException? это из-за ajax?
  2. Как или Где я могу заставить commandLink действительно отправлять меня в index.xhtml?

Это только происходит, когда срок действия представления истекает на странице входа в систему, на других страницах моего приложения это работает очень хорошо.

Заранее спасибо!

1 Ответ

1 голос
/ 28 ноября 2011

Почему, если я на странице входа, я получаю исключение ViewExpiredException? это из-за ajax?

Вы получите это исключение, когда вызовете запрос POST для представления, которое больше не существует в сеансе. Это может произойти, например, когда вы слишком долго держите страницу открытой, если срок сеанса истек на стороне сервера, или когда вы получаете страницу входа из кэша браузера, а не прямо с сервера. Подробнее см. Также на нашей ViewExpiredException странице информации о тегах . Все запросы JSF ajax также учитываются в этом, поскольку они также используют POST.


Как или где я могу сделать, чтобы команда link действительно отправляла меня в index.xhtml?

Использовать неявную навигацию. Таким образом, JSF добавит правильное отображение FacesServlet.

public String goToIndexPage() {
    return "index";
}

или

<h:commandLink value="Go to index page" action="index" />

или, что лучше, когда вам вообще не нужна никакая бизнес-логика:

<h:link value="Go to index page" outcome="index" />

Смотри также:

...