2012-03-26 13 views
0

Kann mir jemand erklären, warum ich die folgende Ausnahme bin immer:Fehler für 404 pagenotfound mit struts2

java.lang.ClassCastException: org.apache.struts2.dispatcher.StrutsRequestWrapper cannot be cast to com.evermind[Oracle Containers 
    for J2EE 10g (10.1.3.5.0) ].server.http.EvermindHttpServletRequest 
    at com.evermind[Oracle Containers for J2EE 10g (10.1.3.5.0) ].server.http.NotFoundServlet.sendNotFound(NotFoundServlet.java:26 
    ) 
    at com.evermind[Oracle Containers for J2EE 10g (10.1.3.5.0) ].server.http.NotFoundServlet.service(NotFoundServlet.java:18) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) 
    at com.evermind[Oracle Containers for J2EE 10g (10.1.3.5.0) ].server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java 
    :64) 
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:88) 
    at com.evermind[Oracle Containers for J2EE 10g (10.1.3.5.0) ].server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java 
    :15) 
    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378) 

ich es, wenn ich nehme NOT_FOUND Seite und meine URL haben, endet am [some_ext] wie.. htm, .blah. Aber wenn Anfrage ohne ist [some_ext]. (Wie _http:/Domain/Teil 1/Teil 2/nosuchurl), dann ist alles in Ordnung, und ich bekomme Seite normale NOT_FOUND in der Struts Config abgebildet:

<default-action-ref name="nopagefound"/> 
<action name="nopagefound"> 
    <result>/WEB-INF/jsp/errors/notfound.jsp</result> 
</action> 

I Struts2 verwenden (2.3 .1.2) + Spring auf oc4j 10.1.3.5.0.

Hier ist mein Streben Mapping:

<filter> 
    <filter-name>struts</filter-name> 
    <filter-class> 
     org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 
    </filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>struts</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

Und in Struts.properties

struts.action.extension= , 

Antwort

0
<filter-mapping> 
     <filter-name>struts2</filter-name> 
     <url-pattern>*.action</url-pattern> 
</filter-mapping> 

Wenn die Erweiterung .Action ist dann nur durch die StrutsPrepareAndExecuteFilter passieren, dann können Sie nicht bekommen diese Ausnahme. Und um den 404-Fehler zu behandeln, können Sie die Standardfehlerseite überschreiben.

+0

Danke für die Antwort, aber das hilft nicht. Zuerst brauche ich keine Erweiterung, und zweitens habe ich diese Ausnahme sowohl für die Standardseite als auch für die benutzerdefinierte 404-Seite. Und außerdem, wenn ich map wie du vorgeschlagen habe, habe ich keine Ausnahme für nicht existente URLs, die auf ".action" enden, aber ich habe es für alle anderen. – user1278890

+0

Wie Sie wissen, wenn Sie keine Erweiterung angeben, wird die Erweiterung .action angegeben. Und was sind die anderen Erweiterungen, die Sie haben, wenn sie keine Aktionen sind, brauchen Sie diesen Filter überhaupt. –

+0

Um @Mohana Rao SV. Nun, wie ich gesagt habe, brauche ich keine Erweiterung, ich muss nur normale 404 Seite nicht gefunden zeigen, wenn der Benutzer eine falsche URL angibt. Und hier kommt ein Problem, wenn diese falsche URL keine Erweiterung haben Ich habe die 404-Seite, aber wenn es eine Erweiterung (egal was) gibt, habe ich ClassCastException (500 ERROR PAGE), wo 404 Seite sein sollte. Ich denke, vielleicht ist es oc4j Bug, weil oc4j 10.1.3.5.0 ein wenig alt ist. – user1278890