2012-03-26 145 views
0

任何人都可以解释我为什么我收到以下异常:误差404 pageNotFound与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) 

我得到它时,我想有NOT_FOUND页面和我的请求URL结束于[some_ext]喜欢。 htm,.blah。但是,当请求是没有[some_ext]。(如_http:/域名/第1部分/第2部分/ nosuchurl),那么一切都OK,我得到的支柱配置映射正常NOT_FOUND页:

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

我使用Struts2的(2.3 .1.2)+部署在oc4j 10.1.3.5.0上的Spring。

这里是我的支柱映射:

<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> 

而且在Struts.properties

struts.action.extension= , 

回答

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

如果分机然后.action只有通过StrutsPrepareAndExecuteFilter那么你不能得到这个例外。并且为了处理404错误,你可以覆盖默认的错误页面。

+0

感谢您的答案,但这并没有帮助。首先,我不需要任何扩展,第二 - 我有默认和自定义404页面的例外。此外,如果我按照您的建议映射,我对于不存在以“.action”结尾的不存在的url的例外情况不例外,但我确实对所有其他地方都有。 – user1278890 2012-03-27 09:07:07

+0

正如你所知,如果你没有指定任何扩展struts会给.action扩展。如果他们不是您需要此过滤器的操作,那么您还有什么其他扩展? – 2012-03-27 16:12:36

+0

To @Mohana Rao SV。那么正如我所说,我不需要任何扩展我只需要显示正常404 PAGE NOT FOUND如果用户指定一些错误的网址。如果这个错误的URL没有扩展我有404页面,但是当有一个扩展名(不管是哪一个)时,我有ClassCastException(500错误页面)404页面应该是这里出现问题。我想也许这是oc4j错误,因为oc4j 10.1.3.5.0有点旧了。 – user1278890 2012-03-28 07:38:04