NavigationHandler.handleNavigation () очищает флэш-память? - PullRequest
3 голосов
/ 20 мая 2010

Я использую JSF2.0 Mojarra 2.0.2.

У меня есть метод, который выходит из системы пользователя и помещает сообщение о выходе во флэш-память, перенаправляя на страницу входа в систему (в которой есть div, который печатает флэш-память). Однако, когда я по какой-то причине использую метод handleNavigation navigationHandlers, флэш-память не отображается. У меня есть похожий метод, который перенаправляет пользователя на страницу входа, если он не вошел в систему.

Если я выполняю навигацию по ссылке h: и просто вызываю метод выхода напрямую, флэш-память отображается как обычно, но если я использую метод handleNavigation (), флэш-память по какой-то причине очищается.

Код, о котором идет речь:

public void performLogout()
{
    getFacesContext().getExternalContext().invalidateSession();
    setCurrentUser(null);
    getFlash().put("notice", "Successfully logged out.");
    super.getFacesContext().getApplication().getNavigationHandler()
            .handleNavigation(getFacesContext(), null, "login");
}

Есть ли какой-нибудь способ сохранить вспышку при такой навигации?

спасибо.

Редактировать: Я полагаю, что эта проблема связана с другой проблемой, связанной с тем, что флэш-память не сохраняется во время перенаправлений, когда страницы xhtml находятся в разных каталогах: http://java.net/jira/browse/JAVASERVERFACES-1635

1 Ответ

2 голосов
/ 18 августа 2010

Ты прав.

Область флеш-памяти JSF 2 в настоящее время чрезвычайно глючная, и, основываясь на спецификации, она, вероятно, останется практически непригодной для использования: http://javaserverfaces.java.net/nonav/docs/2.0/javadocs/index.html

Если вы хотите, чтобы флеш-прицел работал следующим образом, рассмотрите возможность использования CDI, а флеш-прицел из Seam Faces - http://docs.jboss.org/seam/3/faces/reference/snapshot/en-US/html_single/#flashscoped

"Область вспышки должна быть активна с момент, когда объект помещен в сфера, до момента ответа завершил рендеринг. "

- Линкольн

...