0

여기 FullAjaxExceptionHandler에 관한 거의 모든 질문을 검색했으며 그 중 아무 것도 내 문제를 해결하지 않았습니다.FullAjaxExceptionHandler와 함께 오류 페이지가 표시되지 않습니다.

글쎄, FullAjaxExceptionHandler를 구현했지만 아약스 요청과 함께 작동하지 않습니다. 요청이없는 경우 확인을 작동 Ajax와 만료 된 페이지로 리디렉션하지만 아약스의 경우, 빈 페이지가 간다 내가 가지고 :

FullAjaxExceptionHandler: An exception occurred during processing JSF ajax request. Error page '/view/errorpages/expired.faces' will be shown. 
javax.faces.application.ViewExpiredException: viewId:/view/main.faces - A exibição de /view/main.faces não pôde ser restaurada. 
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:200) 
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:111) 
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:508) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:98) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.omnifaces.filter.CacheControlFilter.doFilter(CacheControlFilter.java:226) 
at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:77) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.omnifaces.filter.FacesExceptionFilter.doFilter(FacesExceptionFilter.java:56) 
at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:77) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:113) 
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 
at java.lang.Thread.run(Thread.java:662) 

추신을 다른 곳에서는 수동으로 리디렉션하지 않을 것이라고 확신합니다.

편집 : 나는 정의 ViewExpiredException

public class ViewExpiredException extends ExceptionHandlerWrapper { 

private ExceptionHandler wrapped; 

public ViewExpiredException(ExceptionHandler wrapped) { 
    this.wrapped = wrapped; 
} 

@Override 
public ExceptionHandler getWrapped() { 
    return this.wrapped; 
} 

@Override 
public void handle() throws FacesException { 

    for (Iterator<ExceptionQueuedEvent> iter = getUnhandledExceptionQueuedEvents() 
      .iterator(); iter.hasNext();) { 
     ExceptionQueuedEvent evt = iter.next(); 
     Throwable exception = evt.getContext().getException(); 
     FacesContext fc = evt.getContext().getContext(); 
     if (exception instanceof javax.faces.application.ViewExpiredException) { 

      try { 
       fc.getExternalContext().redirect("/sino/view/main.xhtml"); 
       fc.responseComplete(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } finally { 
       iter.remove(); 
      } 
     } 
    } 
    getWrapped().handle(); 
    } 

} 

으로 접근을 시도하고 Ajax와 비 Ajax 요청에 모두 사용할 수 있습니다. 하지만 난 여전히 omnifaces이 접근 사용하고자하는

페이지가 리디렉션 후 비어 갈 때

UPDATE는 일부 로그를 변경 한 후,이 MSG있어 :이 문제 그러나 나는 생각하지 말아

Warning: you have included the Google Maps API multiple times on this page. This may cause unexpected errors.    main.js.53 

FullAjaxExceptionHandler를 사용하면 왜 그런지 알지 못합니다. ViewExpiredException은 발생하지 않습니다.

Edit2가 : 이제 expired.xhtml입니다 :

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:t="http://myfaces.apache.org/tomahawk" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html" xml:lang="pt" lang="pt"> 
<ui:composition> 
    <h:form> 
     <h:outputText value="View Expired" /> 
    </h:form> 
</ui:composition> 
</html> 

그리고 나는 아직도 리디렉션 아니지만, 현재 페이지가 없습니다 아무 것도 나타나지 않습니다. 페이지는 같은 페이지에 머물러 있습니다.

Uncaught TypeError: Cannot read property '0' of null    primefaces.js.faces?ln=primefaces:1 

리디렉션 전에 문제가 있습니까?

+0

HTTP 트래픽 모니터와 JS 콘솔을 확인하십시오. 모든 것이 그것이되어야하는대로 갔습니까? – BalusC

+0

나는 이상한 상황이 있다고 생각한다. 리디렉션이 작동하면 자바 스크립트 오류가 발생하지만 리디렉션이 작동하지 않으면 페이지가 비어서 오류가 표시되지 않습니다. 나는 당신과 함께 사진을 편집 할 것이다. – Shadi

+0

음, 사실 내 평판 때문에 게시 이미지를 기울일 수 없습니다. – Shadi

답변

0

일부 태그 요소를 제거한 후에도 동일한 문제가 발생했습니다. 네임 스페이스를 사용하는 태그가없는 페이지로 리디렉션하여 작동하는지 확인하십시오.