Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSF重定向异常_Java_Jsf_Jsf 1.2 - Fatal编程技术网

Java JSF重定向异常

Java JSF重定向异常,java,jsf,jsf-1.2,Java,Jsf,Jsf 1.2,从“我的门户”的登录页面导航到索引页面时,会出现这样一种情况:根据某些事实,用户可以从外部重定向到,如下所示: if (!(marketVo.getAbsoluteUrl() != null && marketVo.getAbsoluteUrl().equals(absoluteUrlToRedirect))) { logger.info("---WILL REDIRECT TO ABS URL: " + absoluteUrlToRedirect); final FacesCo

从“我的门户”的登录页面导航到索引页面时,会出现这样一种情况:根据某些事实,用户可以从外部重定向到,如下所示:

if (!(marketVo.getAbsoluteUrl() != null && marketVo.getAbsoluteUrl().equals(absoluteUrlToRedirect))) {
logger.info("---WILL REDIRECT TO ABS URL: " + absoluteUrlToRedirect);
final FacesContext context = FacesContext.getCurrentInstance();
context.responseComplete();
try {
    final HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();

    if (context.getViewRoot() != null) {
        // this step will clear any queued events
        context.getViewRoot().processDecodes(context);
    }
    response.sendRedirect(absoluteUrlToRedirect);

} catch (final Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
}

它抛出了一个异常:

 14:24:35,579 INFO  [CmwSessionHelperBean] ---WILL REDIRECT TO ABS URL: http://hi
tachi.mygravitant.com
14:24:35,580 ERROR [STDERR] java.lang.IllegalStateException
14:24:35,582 ERROR [STDERR]     at org.apache.catalina.connector.ResponseFacade.
sendRedirect(ResponseFacade.java:435)
14:24:35,590 ERROR [STDERR]     at com.example.cloud.common.jsf.core.beans.Cmw
SessionHelperBean.createCmwUserSession(CmwSessionHelperBean.java:269)
你能给我一个建议来避免这种异常的发生吗?请注意,重定向已完成,但由于此异常,当我返回我的门户时,它不再正常工作…

您应该使用它以JSF安全的方式执行重定向

public void createCmwUserSession() throws IOException {

    if (!(marketVo.getAbsoluteUrl() != null && marketVo.getAbsoluteUrl().equals(absoluteUrlToRedirect))) {
        logger.info("---WILL REDIRECT TO ABS URL: " + absoluteUrlToRedirect);
        FacesContext.getCurrentInstance().getExternalContext().redirect(absoluteUrlToRedirect);
    }
}
此方法还将隐式调用
FacesContext#responseComplete()
,您无需自己执行

此外,您需要确保没有在同一响应上多次调用重定向方法,或者在之后执行导航