2013-04-01 55 views
0

我在web.xml中有以下配置:錯誤頁面配置不工作

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    id="WebApp_ID" version="3.0"> 

    <display-name>tycoon-sa</display-name> 

    <context-param> 
     <param-name>br.com.caelum.vraptor.encoding</param-name> 
     <param-value>UTF-8</param-value> 
    </context-param> 

    <error-page> 
     <location>/</location> 
    </error-page> 

    <filter> 
     <filter-name>vraptor</filter-name> 
     <filter-class>br.com.caelum.vraptor.VRaptor</filter-class> 
    </filter> 

    <filter-mapping> 
     <filter-name>vraptor</filter-name> 
     <url-pattern>/*</url-pattern> 
     <dispatcher>FORWARD</dispatcher> 
     <dispatcher>REQUEST</dispatcher> 
     <dispatcher>ERROR</dispatcher> 
    </filter-mapping> 
</web-app> 

我的目標是用戶的主網頁重定向異常或錯誤代碼的情況下(404 ,500等)。但它不起作用。我試圖訪問一個無效的URL,我沒有重定向。應用程序拋出一個NullPointerException。這裏的堆棧跟蹤:

SEVERE: Servlet.service() for servlet default threw exception 
java.lang.NullPointerException 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:321) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at br.com.caelum.vraptor.resource.DefaultResourceNotFoundHandler.couldntFind(DefaultResourceNotFoundHandler.java:41) 
    at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:71) 
    at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) 
    at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) 
    at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44) 
    at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91) 
    at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58) 
    at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88) 
    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.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) 
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:489) 
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412) 
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339) 
    at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:456) 
    at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:327) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:193) 
    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.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

Abr 02, 2013 11:04:32 AM org.apache.catalina.core.StandardHostValve custom 
SEVERE: Exception Processing ErrorPage[errorCode=0, location=/] 
java.lang.NullPointerException 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:321) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at br.com.caelum.vraptor.resource.DefaultResourceNotFoundHandler.couldntFind(DefaultResourceNotFoundHandler.java:41) 
    at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:71) 
    at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) 
    at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) 
    at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44) 
    at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91) 
    at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58) 
    at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88) 
    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.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) 
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:489) 
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412) 
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339) 
    at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:456) 
    at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:327) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:193) 
    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.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

任何線索? 。如果你想這樣做,你可以使用Apache服務器和寫入以下

RewriteEngine on  
Redirect /--xyz-75/ http://www.domain.com.au/ 
+0

一個更多信息:我需要調用一個servlet,因爲我的錯誤頁面有一個預處理。 –

回答

0

錯誤頁面無法rediect網址無效。 JSP

+0

對不起。我不明白爲什麼這是一個無效的網址。 –

0

在錯誤頁面標籤 /的errorPage指定錯誤代碼

+0

我沒有使用錯誤代碼標記。如果你想捕獲任何錯誤代碼,你不需要在Servlet 3.0上的這個標籤:http://stackoverflow.com/questions/7066192/sp​​ecify-the-default-error-page-in-web-xml-in-servlet –

1

這是配置默認的錯誤頁面,所有的錯誤的方式

<error-page> 
<location>/whateverpage.html</location> 
</error-page> 

請記住,只有在您使用Servlet 3.0時纔會生效。如果您仍在使用Servlet 2.5,那麼您將必須指定每個錯誤代碼。

<error-page> 
<error-code>404</error-code> 
<location>/notfound.html</location> 
</error-page> 
<error-page> 
<error-code>403</error-code> 
<location>/general-error.html</location> 
</error-page> 
+0

所以我不能定義一個路徑內的「位置」標籤,以處理一個Servlet? –

+0

我想你應該可以調用一個servlet使用位置 – Shurmajee

+0

所以我...但我沒有工作一些爲什麼...我添加了更多信息的問題.. –