struts2 + spring3 +hibernate 3.641031 ERROR [http-8080-exec-7] org.apache.struts2.dispatcher.Dispatcher     - Could not find action or result
/RiskManager/manage/undefined
There is no Action mapped for action name undefined. - [unknown location]
at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189)
at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:475)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:242)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:203)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:558)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:281)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:357)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1671)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)Web.xml代码<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>dwr</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<!--此处指定项目处于开发之中,故可通过http://localhost:8000/dwrdemo1/dwr/,而不会出现403-->
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet> <servlet-mapping>
<servlet-name>dwr</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

解决方案 »

  1.   

    action 没有写错,我打开任何一个页面都会这样,但是功能正常,jsp页面直接就打开了,但是就是报上面的错误。我怀疑是/*把所有的请求都过滤包括.jpg,.css啊之类的东西,但是不知道怎么解决
      

  2.   

    你是怎么访问的?把你提交的jsp页面贴上来。很可能是ACTION名字写错或者没有后缀!
      

  3.   

    比如 我访问这个页面
    http://localhost:8080/RiskManager/manage/
    它默认应该是打开http://localhost:8080/RiskManager/manage/index.jsp虽然可以打开,但是它还是报哪个错误
    index 的源码<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <s:if test="#session.user.userLevel==null||#session.user.userLevel>=16">
    <%response.sendRedirect("adminLogin.jsp"); %>
    </s:if>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
    <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/xtab.css">
    <jsp:include page="/manage/style/head.jsp"/>
    </head>
    <jsp:include page="/manage/style/top.jsp"/>
    <!-- Page title -->
    <div id="pagetitle">
    <div class="wrapper">
    <h1>首页</h1>

    </div>
    </div>
    <!-- End of Page title -->

    <!-- Page content -->
    <div id="page">
    <!-- Wrapper -->
    <div class="wrapper">
    </div>
    <!-- End of Wrapper -->
    </div>
    <!-- End of Page content --> <!-- Scroll to top link -->
    <div id="page">
    <!-- Wrapper -->
    <div class="wrapper">
    <br/>

    <s:property value="#session.user.userLevel"/>
    </div>
    <!-- End of Wrapper -->
    </div>
    <!-- User interface javascript load -->
    <script type="text/javascript" SRC="${pageContext.request.contextPath}/js/administry.js"></script>

    </html>
      

  4.   

    struts是负责action的配置的
    你应该把struts2的配置文件贴出来吧
      

  5.   

    现在的问题是action 它可以正常跳转什么的,但是会提示/RiskManager/manage/undefined,貌似是过滤所有的文件了 但是我改成 *.action 又报struts2标签错误。
      

  6.   

    就算action正常跳转了,但还是报那个错误
      

  7.   

    把struts-config的内容贴上来
    你的spring那边/*没问题
      

  8.   

    改成下面的试试    <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
      

  9.   

    改过了没用,我改成 <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>*.action</url-pattern>
        </filter-mapping>
    <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>*.jsp</url-pattern>
        </filter-mapping>就没问题了,不知道什么情况
      

  10.   

    汗,这个你用了dwr 写成/*会把dwr的请求也过虑掉的。在struts的配置文件中加一句常量<constant name="struts.action.extension" value="/dwr/*" />  lz上面写的方式也可以。
      

  11.   

    http://blog.csdn.net/jingmin/archive/2009/03/31/4039336.aspx 可以去看下struts2常量方面的知识
      

  12.   

    真不好意思,写错了个常量 ,现在补充下
    <constant name="struts.action.excludePattern" value="/dwr/?,/dwr/.*"></constant> 在web.xml中就struts就可以定义成 /* 了。