OK простой вопрос. У меня есть приложение JSF, содержащее страницу входа. Проблема заключается в том, что пользователь загружает страницу входа в систему, оставляет ее на некоторое время, затем пытается войти в сеанс, и истекает исключение ViewExpiredException. Я могу перенаправить обратно в логин, когда это произойдет, но это не очень гладко. Как я могу позволить этому потоку правильно войти без дополнительной попытки?jsf логин-аут
ответ
Update
По Mojarra 2.1.19/2.2.0 теперь вы можете установить переходный атрибут <f:view>
истина:
<f:view transient="true">
Your regular content
</f:view>
Вы можете прочитать в блоге на Balusc's здесь :
http://balusc.blogspot.com.br/2013/02/stateless-jsf.html
Оригинал
Если вы используете Facelets вы можете создать свой собственный обработки просмотров справиться с этим:
public class LoginViewHandler extends FaceletViewHandler
{
public LoginViewHandler(ViewHandler viewHandler)
{
super(viewHandler);
}
@Override
public UIViewRoot restoreView(FacesContext ctx, String viewId)
{
UIViewRoot viewRoot = super.restoreView(ctx, viewId);
if (viewRoot == null && viewId.equals("/login.xhtml"))
{
// Work around Facelet issue
initialize(ctx);
viewRoot = super.createView(ctx, viewId);
ctx.setViewRoot(viewRoot);
try
{
buildView(ctx, viewRoot);
}
catch (IOException e)
{
log.log(Level.SEVERE, "Error building view", e);
}
}
return viewRoot;
}
}
Изменить «/login.xhtml» на странице входа в систему. Это проверяет, может ли он восстановить ваше представление, а если он не может, и текущее представление является вашей страницей входа в систему, оно создаст и построит представление для вас.
Установить это в лицо-config.xml следующим образом:
<application>
<!-- snip -->
<view-handler>my.package.LoginViewHandler</view-handler>
</application>
Если вы используете JSF без Facelets (т.е. JSPs), вы можете попробовать, имеющие класс продлить ViewHandlerWrapper - обратите внимание, что buildView() будет не будут доступны. Надеюсь, что createView() на нем будет правильно настроен, но я не уверен на 100% с JSF/JSP.
Пара немного Hacky решений:
- (Очень Hacky) использовать
<meta http-equiv="refresh" content="5"/>
тег автоматически перезагрузить страницу каждый так часто. - Используйте функцию JavaScript, чтобы периодически отправлять запрос «ping» на сервер, чтобы сохранить сеанс в активном режиме.
Мы используем IceFaces на работе, которая автоматически обнаруживает, когда истек срок вашей сессии, и отображает всплывающее предупреждение о факте. Но по некоторым причинам у нас по-прежнему возникают проблемы на странице входа в систему.
Похоже, что ваша страница входа в сеансовую область, когда это действительно не обязательно. Область запроса должна быть прекрасной для страницы входа (так как, как правило, не должно быть ничего в сеансе до входа пользователя в систему). Как только пользователь войдет в систему, у вас может возникнуть эта проблема, но идеи Филла очень хороши.
С помощью jsp вы можете отключить сеанс для страницы, включая эту директиву <%@ page session="false" %>
. Для jsf должно быть что-то похожее.
- 1. JSF 1.0 vs JSF 2.0
- 2. Данные от JSF до JSF
- 3. jsf ошибка переадресации jsf ошибка
- 4. Проблема JSF JavaScript - «jsf» не определено
- 5. JSF 1.2 миграции приложений на JSF 2.0
- 6. Как * .jsf преобразуется в * .xhtm в JSF
- 7. JSF правильное использование зависимости jsf-api
- 8. JSF отправки скрытый вход в другой JSF
- 9. Как заменить JSF 1.2 на JSF 2.0
- 10. JSF-ArrayList из ArrayList в JSF
- 11. Производительность JSF: насколько масштабируемым является JSF?
- 12. JSF-метки в обработчике компонентов JSF
- 13. JSF passthrough elements jsf: действие javascript function
- 14. Миграция с JSF 1.1 на JSF 1.2
- 15. JSF - Как реализация JSF идентифицирует действие?
- 16. jsf java спрашивает о времени в jsf
- 17. validateLength в JSF 1.2 Vs JSF 2.1
- 18. Ugrading to jsf 2.2 от jsf 2.1
- 19. Смешать HTML и JSF в подвале JSF
- 20. Зачем использовать JSF 1.2 над JSF 2.0
- 21. JSF-интернализация
- 22. JSF: com.sun.faces.mgbean.ManagedBeanCreationException
- 23. viewExpiredException JSF
- 24. JSF, Hibernate
- 25. JSF performance
- 26. JSF selectOneMenu
- 27. JSF selectManyCheckbox
- 28. JSF Tuning
- 29. JSF Authentication
- 30. JSF вводHelperDatePicker
Любая идея, как это сделать в JSF 2? – 2012-08-22 00:49:56