2010-07-21 65 views
0

我正在使用JSF并在web.xml中将javax.faces.STATE_SAVING_METHOD传递给客户端。我想要发生的是,当会话超时并尝试重定向到另一个页面时,它必须重定向到sessionTimeout.jsf并单击该页面上的按钮,它必须重定向到login.jsf。我设计了sessionTimeout.jsf。每当会话过期并尝试导航到其他页面时,都会抛出javax.faces.application.ViewExpiredException。我在目标页面中设置了一个会话变量,以便每当它进入该页面时,它首先检查变量,但在此之前会抛出异常,然后进入该页面。如何解决这个问题?JSF中的ViewExpiredException

+0

通过添加自定义ViewHandler解决。谢谢大家 – Prabhat 2010-07-22 06:11:16

回答

1
+0

我不能将标记放在faces-config.xml中并将它放在web.xml中不会有任何区别 – Prabhat 2010-07-21 04:59:12

+0

您使用的是什么JSF实现,MyFaces,Facelets,Richfaces等? – 2010-07-21 05:12:59

+0

我正在使用Richfaces – Prabhat 2010-07-21 05:17:24

0

的解决方案是增加:

<a4j:region> 
<script language="javascript"> 
A4J.AJAX.onExpired = function(loc, expiredMsg){ 
    window.location = "/sessionTimeOut.jsf"; 
} 
</script> 
</a4j:region> 

更多in RichFaces guide

-2

web.xml中添加在刷新页面给消息...

<error-page> 
    <exception-type>javax.faces.application.ViewExpiredException</exception-type> 
    <location>viewExpired.xhtml</location> 
</error-page> 
+2

阅读其他答案和在不必要地发布重复答案之前对其他答案进行评论。 – BalusC 2010-07-22 14:02:38

1

“每当会话过期我尝试导航到不同的页面,抛出了javax.faces.application.ViewExpiredException。“

您应该制作诸如错误页面和登录页面等瞬态页面,以便在离开会话页面时导致会话失效。由于BalusC查找有关此文章:

http://balusc.omnifaces.org/2013/02/stateless-jsf.html

这将确保您的会话范围豆没有得到重新初始化立即行动方法的会话失效时,并重定向到ISN视图”不受您的会话授权过滤器保护。