首先我是看 尚学堂马老师 视频学习的
我学了20来集Struts2的视频后准备自己从头梳理一遍
结果开头就出问题了
web.xml复制了这段代码进来
      <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>
应该没什么问题。
struts.xml里面“包”的那段代码如下:
    <package name="relationship" namespace="/" extends="struts-relationship">
        <action name="friend" >
            <result>/Friend.jsp</result>
        </action>
    </package> 
就这么简单的一个过程居然 老是出错。提示的居然是找不到action! 我明明写了friend啊。而且我直接复制老师的代码过来就能访问到 对应的index.jsp。我就觉得奇怪了 还有什么特别的地方 有BUG么?
警告: Could not find action or result
There is no Action mapped for action name friend. - [unknown location]
at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
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:501)
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:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:722)

解决方案 »

  1.   

    补充下 我输入 basePath 的时候 可以方位web.xml里面定义的index.jsp啊
    另外 我把namespace 改为"/"之后 依然输入/relationship/friend 它依然只提示找不到action 这又是为什么啊  为什么啊 为什么   要疯了
      

  2.   

    <result>/Friend.jsp</result> 这个默认是name="succees" 是不是action的结果返回的结果不是succees啊 如果是这样的就是找不到了,还有就是路径的问题了 
      

  3.   

    应该不是"success"的问题啊,我简写成这样 默认调用的函数里面的execute方法就是返回一个success的。
    路径不就是http://localhost:8080/Program Name/NameSpace/Action 么?
      

  4.   

    <action name="friend" >要改,你没有class属性,就是没有对应的action,提示说的相当明白了嘛There is no Action mapped for action name friend(这里没有名为friend action的action映射)英语在差都看得懂,以后出错还是看看错误提示
      

  5.   

    首先,我不知道你为什么用extends="struts-relationship",一般没有特殊的继承关系都是用default的,最主要的问题楼上说的都对,你friend没有对应的class,找不到对应类里面的方法更别提方法里面返回success里对应的那个界面了。要不楼主可以不写name="friend",让它自己找框架内部类,那个是action配置的最简写法
      

  6.   

    应该是这个的问题,“struts-relationship”是什么,是不是还有一个继承包你给掉了,默认继承的是struts-default
    <package name="relationship" namespace="/" extends="struts-relationship">
      <action name="friend" >
          <result>/Friend.jsp</result>
      </action>
    </package>  
    另外,如果你只是做页面的跳转,可以不指定action中的class属性,当然这个时候只会转向name="success"的result指定的页面
      

  7.   

    LZ extends="struts-relationship"这个的问题吧.你可能不存在这样的命名,你现在又要去继承他,肯定不会成功的呀
      

  8.   

    你继承的是什么 再说你配置的action 也没有class啊 怎么找对应的action
      

  9.   

    4楼说的,你没有action多对应的类。少注册class属性了。
      

  10.   

    <package name="relationship" namespace="/" extends="struts-default">
      <action name="friend" class="包名.类名">
      <result>/Friend.jsp</result>
      </action>
    </package备注:action>元素:作用是定义请求和Action组件之间的对应关系       *name属性:action组件对应的请求名
           *class属性:指定action组件的实现类,包名.类名格式
           method属性:指定要调用action类中哪个方法.默认值是execute
      

  11.   

    <action name="friend" class="">....你的class呢?如何和Spring整合。。那么这里的class必须与你Spring配置文件的id相同!!
      

  12.   

    楼上正解,你缺少class这个属性,比如如果你是login.action,这个loging()方法在LoginAction 里面 class=com.xxx.LoginAction