여기 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
리디렉션 전에 문제가 있습니까?
HTTP 트래픽 모니터와 JS 콘솔을 확인하십시오. 모든 것이 그것이되어야하는대로 갔습니까? – BalusC
나는 이상한 상황이 있다고 생각한다. 리디렉션이 작동하면 자바 스크립트 오류가 발생하지만 리디렉션이 작동하지 않으면 페이지가 비어서 오류가 표시되지 않습니다. 나는 당신과 함께 사진을 편집 할 것이다. – Shadi
음, 사실 내 평판 때문에 게시 이미지를 기울일 수 없습니다. – Shadi