日期:2014-05-19  浏览次数:20709 次

跪求Struts2达人帮忙啊
首先我是看 尚学堂马老师 视频学习的
我学了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)



------解决方案--------------------
<action name="friend" >要改,你没有class属性,就是没有对应的action,提示说的相当明白了嘛There is no Action mapped for action name friend(这里没有名为friend action的action映射)英语在差都看得懂,以后出错还是看看错误提示
------解决方案--------------------
首先,我不知道你为什么用extends="struts-relationship",一般没有特殊的继承关系都是用default的,最主要的问题楼上说的都对,你friend没有对应的class,找不到对应类里面的方法更别提方法里面返回success里对应的那个界面了。要不楼主可以不写name="friend",让它自己找框架内部类,那个是action配置的最简写法
------解决方案--------------------
应该是这个的问题,“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指定的页面
------解决方案--------