2011-08-18 39 views
1

我有一个.xhtml页面中,我曾经尝试都BalusC的建议here,也没有避免OP's issueJSF和j_security_check连接

<meta http-equiv="refresh" content="#{session.maxInactiveInterval}"/> 

基本上下面,我启动应用程序和基于表单的认证页面渲染。然后我等待会话时间到期。如果我尝试登录后,那么OP's problem发生。

+0

你能否确认页面实际上是由元刷新标记刷新?你能否确认'content'属性包含一个合理的值,并且确实会在几秒钟内超时?在浏览器中右键单击页面,然后选择*查看源代码*。 – BalusC

+0

抱歉,提出这个问题的方式混乱 - 下次会做得更好。检查了我的login.jsp之后,我发现我放错了位置!我现在有我再次感谢这种迅速的回应。 在login.jsp的和在的index.xhtml以下 我可以证实,这现在确保的login.jsp被刷新和当会话在index.xhtml上过期时,呈现login.jsp。 – Martin

+0

我将其转贴为答案。如果你了解JSP和Facelets的区别我想不过...你问了一个非常类似的问题之前:http://stackoverflow.com/questions/7098831/jsf-problem-with-using-maxinactiveinterval我期望这是很清楚的是'$ {pageContext.session}'可以在JSP中使用,而'#{}会议在'唯一的Facelets,而Facelets的是JSP(因此JSP的继任者不应该在所有的使用这是一个古老的视图技术)。 – BalusC

回答

0
<meta http-equiv="refresh" content="#{session.maxInactiveInterval}"/> 

#{session}仅适用于Facelets。这不起作用表明你没有为这个特定的视图使用Facelets,而是其传统的predecesor JSP或者甚至普通的vanilla HTML。

对于JSP,你应该使用${pageContext.session}获取会话,正是因为证明我对你发现自己的问题的答案。或者,更好的办法是完全摆脱遗留的JSP,并用它的后继者Facelets取而代之。

+0

好的,谢谢BalusC。我是JSF的新手,来自JSP背景。我现在明白了,将来不会浪费任何人的时间。我会看看是否用.xhtml替换login.jsp和loginerror.jsp页面将在我的特殊用例中起作用。 – Martin

+0

不客气。它应该是为重命名'.jsp'到'.xhtml'一样简单,更换'<%@标签库前缀= “x” 的URI = “URI”>''通过的xmlns:X = “URI”'等哦老式* scriptlets *不在Facelets中工作,但这只是一件好事:) – BalusC

+0

好的再次感谢。 – Martin