Struts2注解错误There is no Action mapped for namespace [/].....
2014-11-23 00:07
387 查看
异常:
警告: Could not find action or result: /s23s41h43/testAction/test
There is no Action mapped for namespace [/testAction] and action name [test] associated with context path [/s23s41h43]. - [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:37)
at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:552)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:534)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1081)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:277)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2381)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2370)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:744)
总结:
我用最新版本的Struts2.3.16.3做注解操作的时候,一直出现这个问题。花了近两个小时才解决,错误原因让人啼笑皆非……
web.xml类:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID"
version="3.1">
<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>
<display-name>s23s41h43</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
struts.xml类
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 请求参数的编码方式 -->
<constant name="struts.i18n.encoding" value="UTF-8"/>
<!-- 该属性指定Struts 2应用所需要的国际化资源文件,如果有多份国际化资源文件,则多个资源文件的文件名以英文逗号(,)隔开 -->
<constant name="struts.custom.i18n.resources" value="global" />
<!-- 将对象交给spring管理
<constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory"/> -->
<!-- 设置文件上传大小,最大不超过xxM -->
<constant name="struts.multipart.maxSize" value="50485760"/>
<!-- 开启使用开发模式,详细错误提示 -->
<constant name="struts.devMode" value="false" />
<!-- 指定每次请求到达,重新加载资源文件 (在开发阶段将该属性设置为true 会更有利于开发,但在产品发布阶段应将该属性设置为false)-->
<constant name="struts.i18n.reload" value="true" />
<!-- 指定每次配置文件更改后,自动重新加载 -->
<constant name="struts.configuration.xml.reload" value="true" />
<!-- 设置浏览器是否缓存静态内容。默认值为true(生产环境下使用),开发阶段最好关闭 -->
<constant name="struts.serve.static.browserCache" value="false" />
<!-- 非注解写法 start
<package name="tests" namespace="/testAction" extends="struts-default">
<action name="test" class="com.xcfh.test.controller.TestAction" method="test">
<result name="success">/success.jsp</result>
<result name="input">/index.jsp</result>
</action>
</package>
end 非注解写法 -->
</struts>
Action类:
package com.xcfh.test.action;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import com.opensymphony.xwork2.ActionSupport;
/**
* @author PineTree
* @version 1.0
* 2014-11-22
*/
@ParentPackage("struts-default")
@Namespace("/testAction")
public class TestAction extends ActionSupport{
private static final long serialVersionUID = 1;
@Action(value="test", results={
@Result(name="success", location="/index.jsp"),
@Result(name="input", location="/success.jsp")
})
public String test(){
try{
System.out.println("------------------------");
return "success";
}catch(Exception e){
e.printStackTrace();
}
System.out.println("++++++++++++++++++++++++++++++++++");
return "input";
}
}
目录结构:
乍一看,是没有任何问题的!可是只要一运行就报错!在百思不得其解后,突然发现我这个包名建的有点特别,问题就出在这里!将Action或者把你的com.xxx.controller中的controller换成action就可以了,以下是Struts2的原文文档:
First the Convention plugin finds packages named
Any packages that match those names are considered the root packages for the Convention plugin. Next, the plugin looks at all of the classes in those packages as well as sub-packages and determines if the classes implement
if their name ends with Action (i.e.
FooAction).
注意我标红的内容,也就是说,如果要用Struts2的注解,你还非得将action处理类放在
修改后的目录:
碰到了同样的问题,以前确实不知道基于注解的
struts 配置 需要将action类 放在 名字为 action 的package下。
所用JAR包:
asm-3.3.jar [b]//用注解包必须带这个包[/b]
asm-commons-3.3.jar
commons-fileupload-1.3.1.jar
commons-io-2.2.jar
commons-lang3-3.1.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
ognl-3.0.6.jar
struts2-convention-plugin-2.3.16.3.jar
//这是注解包
struts2-core-2.3.16.3.jar
xwork-core-2.3.16.3.jar
警告: Could not find action or result: /s23s41h43/testAction/test
There is no Action mapped for namespace [/testAction] and action name [test] associated with context path [/s23s41h43]. - [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:37)
at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:552)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:534)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1081)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:277)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2381)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2370)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:744)
总结:
我用最新版本的Struts2.3.16.3做注解操作的时候,一直出现这个问题。花了近两个小时才解决,错误原因让人啼笑皆非……
web.xml类:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID"
version="3.1">
<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>
<display-name>s23s41h43</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
struts.xml类
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 请求参数的编码方式 -->
<constant name="struts.i18n.encoding" value="UTF-8"/>
<!-- 该属性指定Struts 2应用所需要的国际化资源文件,如果有多份国际化资源文件,则多个资源文件的文件名以英文逗号(,)隔开 -->
<constant name="struts.custom.i18n.resources" value="global" />
<!-- 将对象交给spring管理
<constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory"/> -->
<!-- 设置文件上传大小,最大不超过xxM -->
<constant name="struts.multipart.maxSize" value="50485760"/>
<!-- 开启使用开发模式,详细错误提示 -->
<constant name="struts.devMode" value="false" />
<!-- 指定每次请求到达,重新加载资源文件 (在开发阶段将该属性设置为true 会更有利于开发,但在产品发布阶段应将该属性设置为false)-->
<constant name="struts.i18n.reload" value="true" />
<!-- 指定每次配置文件更改后,自动重新加载 -->
<constant name="struts.configuration.xml.reload" value="true" />
<!-- 设置浏览器是否缓存静态内容。默认值为true(生产环境下使用),开发阶段最好关闭 -->
<constant name="struts.serve.static.browserCache" value="false" />
<!-- 非注解写法 start
<package name="tests" namespace="/testAction" extends="struts-default">
<action name="test" class="com.xcfh.test.controller.TestAction" method="test">
<result name="success">/success.jsp</result>
<result name="input">/index.jsp</result>
</action>
</package>
end 非注解写法 -->
</struts>
Action类:
package com.xcfh.test.action;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import com.opensymphony.xwork2.ActionSupport;
/**
* @author PineTree
* @version 1.0
* 2014-11-22
*/
@ParentPackage("struts-default")
@Namespace("/testAction")
public class TestAction extends ActionSupport{
private static final long serialVersionUID = 1;
@Action(value="test", results={
@Result(name="success", location="/index.jsp"),
@Result(name="input", location="/success.jsp")
})
public String test(){
try{
System.out.println("------------------------");
return "success";
}catch(Exception e){
e.printStackTrace();
}
System.out.println("++++++++++++++++++++++++++++++++++");
return "input";
}
}
目录结构:
乍一看,是没有任何问题的!可是只要一运行就报错!在百思不得其解后,突然发现我这个包名建的有点特别,问题就出在这里!将Action或者把你的com.xxx.controller中的controller换成action就可以了,以下是Struts2的原文文档:
First the Convention plugin finds packages named
struts,
struts2,
actionor
actions.
Any packages that match those names are considered the root packages for the Convention plugin. Next, the plugin looks at all of the classes in those packages as well as sub-packages and determines if the classes implement
com.opensymphony.xwork2.Actionor
if their name ends with Action (i.e.
FooAction).
注意我标红的内容,也就是说,如果要用Struts2的注解,你还非得将action处理类放在
struts,
struts2,
action,
actions包或者其子包中。以前总是习惯性的将所有的action处理类放在com.xxx.action下,以为仅仅是习惯而已,没曾想Struts2还就是这么规定的。
修改后的目录:
碰到了同样的问题,以前确实不知道基于注解的
struts 配置 需要将action类 放在 名字为 action 的package下。
所用JAR包:
asm-3.3.jar [b]//用注解包必须带这个包[/b]
asm-commons-3.3.jar
commons-fileupload-1.3.1.jar
commons-io-2.2.jar
commons-lang3-3.1.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
ognl-3.0.6.jar
struts2-convention-plugin-2.3.16.3.jar
//这是注解包
struts2-core-2.3.16.3.jar
xwork-core-2.3.16.3.jar
相关文章推荐
- Struts2注解错误之There is no Action mapped for namespace [/]……
- Struts2注解错误之There is no Action mapped for namespace [/]……
- Struts2注解错误之There is no Action mapped for namespace [/]……
- Struts2错误:There is no Action mapped for namespace... 解决方法
- struts2 纯注解 却提示There is no Action mapped for namespace
- struts2用注解开发出错一 There is no Action mapped for namespace [/] and action name [zhujie] associated with
- 初学struts2 出现There is no Action mapped for namespace...错误
- 解决STRUTS2 错误 There is no Action mapped for namespace / and action name
- 每当使用struts2动态方法调用时,总是出现错误:There is no Action mapped for namespace [/user] and action name [user!add]
- struts2常见配置解决错误There is no mapped for namespace[/] and action name
- Struts2中关于"There is no Action mapped for namespace / and action name"错误
- struts2中的There is no Action mapped for namespace [/] 错误
- There is no Action mapped for namespace [/] and action name [accoutLogin] associated with context path [/cloudclick].Struts2错误
- Struts2中关于"There is no Action mapped for namespace / and action name"的错误解决
- 关于struts2总是报There is no Action mapped for namespace / and action name login错误的一点经验
- struts2 框架0配置,错误信息:There is no Action mapped for namespace
- struts2用注解开发出错二 There is no Action mapped for namespace [/] and action name [zhujie] associated with
- 彻底解决STRUTS2 错误There is no Action mapped for namespace / and action name login
- struts2提示“There is no Action mapped for namespace [/] and action name [XXX]... ”错误的解决办法
- struts2中错误提示:There is no Action mapped for namespace / and action name