首先我是看 尚学堂马老师 视频学习的
我学了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)
我学了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)
另外 我把namespace 改为"/"之后 依然输入/relationship/friend 它依然只提示找不到action 这又是为什么啊 为什么啊 为什么 要疯了
路径不就是http://localhost:8080/Program Name/NameSpace/Action 么?
<package name="relationship" namespace="/" extends="struts-relationship">
<action name="friend" >
<result>/Friend.jsp</result>
</action>
</package>
另外,如果你只是做页面的跳转,可以不指定action中的class属性,当然这个时候只会转向name="success"的result指定的页面
<action name="friend" class="包名.类名">
<result>/Friend.jsp</result>
</action>
</package备注:action>元素:作用是定义请求和Action组件之间的对应关系 *name属性:action组件对应的请求名
*class属性:指定action组件的实现类,包名.类名格式
method属性:指定要调用action类中哪个方法.默认值是execute