我正在使用JSF 2 OpenShift(JBoss 7服务器)做一个项目,我无法通过重定向来解决问题。我正在使用Glassfish在当地尝试一切。当我尝试访问“access.xhml”页面时,我的问题就出现了,为了监控我记录的用户,我把它放在了下面:
<f:metadata>
<f:event type="preRenderView" listener="#{sesion.checkSession()}" />
</f:metadata>
在方法的定义中我有以下
public void checkSession() throws IOException{
faceContext=FacesContext.getCurrentInstance();
httpServletRequest=(HttpServletRequest)faceContext.getExternalContext().getRequest();
if(httpServletRequest.getSession().getAttribute("connected")==null)
{
faceContext.getExternalContext().redirect(faceContext.getExternalContext().getRequestContextPath() + "/index.xhtml"); // For local changes
}
}
证明什么返回
faceContext.getExternalContext().getRequestContextPath()
我注意到它总是“”,这表明重定向应该转到根目录。关键是当我尝试直接输入www.my-app.rhcloud.com/access.xhtml时总是抛出500错误
Exception when handling error trying to reset the response.: java.lang.IllegalStateException
at com.sun.faces.context.ExternalContextImpl.redirect(ExternalContextImpl...
at org.sindicatopygp.beans.SessionBean.checkSession(SessionBean.java:43)
有什么想法吗?我们感谢
答案 0 :(得分:0)
我解决了。由于某种原因,index.xhtml无法识别该文件,如果重定向到servlet root并成功重定向到文件index.xhtml。解决方案
<div class="alert alert-dismissable alert-info">
<button aria-hidden="true" class="close" data-dismiss="alert">×</button>
Good morning
</div>