Дополнение Nathan к Вашему .emacs файлу является способом пойти, но это могло быть упрощено немного путем замены
(open-line 1)
(next-line 1)
с
(newline)
получение
(defun duplicate-line()
(interactive)
(move-beginning-of-line 1)
(kill-line)
(yank)
(newline)
(yank)
)
(global-set-key (kbd "C-d") 'duplicate-line)
Для меня работает следующий подход. Обратите внимание, что вы должны использовать перенаправление основной библиотеки тегов JSTL, а не перенаправление jsp, чтобы это работало (поскольку срок действия jsp также истекает).
В вашем FacesConfig.xml вы помещаете следующее:
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/sessionExpired.jsf</location>
</error-page>
sessionExpired.jsp :
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:redirect url="/login.jsf" />
Вы также можете использовать этот подход для других типов ошибок или исключений. Например, элемент содержит сопоставление между кодом ошибки или типом исключения и путем к ресурсу в веб-приложении. [
<error-page>
<error-code>400</error-code>
<location>/400.html</location>
</error-page>
или элемент содержит полное имя класса типа исключения Java.
<error-page>
<exception-type>javax.servlet.ServletException</exception-type>
<location>/servlet/ErrorDisplay</location>
</error-page>
Я бы посоветовал написать прослушиватель сеанса вместе с фильтром.
Когда сеанс истечет, вы можете создать новый объект сеанса и установить значение тайм-аута для нового объекта.
Просто проверьте значение тайм-аута в фильтре и перенаправьте браузер.
См. http://www.java2s.com/Code/Java/Servlets/Servletsessionlistener.htm