我有一个action: MyAction,在applicationContext中定义如下:<bean id="myAction" class="com.mycompany.demo.action.MyAction"/>
在struts.xml中定义action如下: <package name="demo" extends="json-default">
<!-- {1}:module name {2}:action name -->
<action name="*/*" class="{2}">
<result name="success">/jsp/{1}/{2}.jsp</result>
</action>
</package>
这样,如果我希望访问:http://localhost:8080/demo/x/myAction.action的时候.
x对应的是{1}, myAction对应的是{2}页面报错:Struts Problem Report
Struts has detected an unhandled exception: Messages:
Unable to instantiate Action, , defined for 'myAction' in namespace '/'
File: org/apache/catalina/loader/WebappClassLoader.java
Line number: 1,386
--------------------------------------------------------------------------------Stacktraces
Unable to instantiate Action, , defined for 'myAction' in namespace '/'
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:300)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:381)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:187)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:467)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:467)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
java.lang.Thread.run(Unknown Source)
java.lang.ClassNotFoundException:
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1386)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1232)
com.opensymphony.xwork2.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:147)
com.opensymphony.xwork2.ObjectFactory.getClassInstance(ObjectFactory.java:94)
com.opensymphony.xwork2.spring.SpringObjectFactory.getClassInstance(SpringObjectFactory.java:193)
com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:127)
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:137)
com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:107)
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:281)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:381)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:187)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:467)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:467)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
java.lang.Thread.run(Unknown Source)
--------------------------------------------------------------------------------You are seeing this page because development mode is enabled. Development mode, or devMode, enables extra debugging behaviors and reports to assist developers. To disable this mode, set: struts.devMode=falsein your WEB-INF/classes/struts.properties file. 意思不知道我的myAction从哪来的.我把struts.xml文件改一下,改成: <package name="demo" extends="json-default">
<!-- {1}:module name {2}:action name -->
<action name="*/*" class="com.mycompany.demo.{2}Action">
<result name="success">/jsp/{1}/{2}.jsp</result>
</action>
</package>
这样,访问:http://localhost:8080/demo/x/MyAction.action的时候.
x对应的是{1}, MyAction对应的就是com.mycompany.demo.MyAction.
这样,就能访问了.
这说明.spring没有对class="myAction"及时的初始化. 请问这是为什么?
在struts.xml中定义action如下: <package name="demo" extends="json-default">
<!-- {1}:module name {2}:action name -->
<action name="*/*" class="{2}">
<result name="success">/jsp/{1}/{2}.jsp</result>
</action>
</package>
这样,如果我希望访问:http://localhost:8080/demo/x/myAction.action的时候.
x对应的是{1}, myAction对应的是{2}页面报错:Struts Problem Report
Struts has detected an unhandled exception: Messages:
Unable to instantiate Action, , defined for 'myAction' in namespace '/'
File: org/apache/catalina/loader/WebappClassLoader.java
Line number: 1,386
--------------------------------------------------------------------------------Stacktraces
Unable to instantiate Action, , defined for 'myAction' in namespace '/'
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:300)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:381)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:187)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:467)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:467)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
java.lang.Thread.run(Unknown Source)
java.lang.ClassNotFoundException:
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1386)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1232)
com.opensymphony.xwork2.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:147)
com.opensymphony.xwork2.ObjectFactory.getClassInstance(ObjectFactory.java:94)
com.opensymphony.xwork2.spring.SpringObjectFactory.getClassInstance(SpringObjectFactory.java:193)
com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:127)
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:137)
com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:107)
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:281)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:381)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:187)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:467)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:467)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
java.lang.Thread.run(Unknown Source)
--------------------------------------------------------------------------------You are seeing this page because development mode is enabled. Development mode, or devMode, enables extra debugging behaviors and reports to assist developers. To disable this mode, set: struts.devMode=falsein your WEB-INF/classes/struts.properties file. 意思不知道我的myAction从哪来的.我把struts.xml文件改一下,改成: <package name="demo" extends="json-default">
<!-- {1}:module name {2}:action name -->
<action name="*/*" class="com.mycompany.demo.{2}Action">
<result name="success">/jsp/{1}/{2}.jsp</result>
</action>
</package>
这样,访问:http://localhost:8080/demo/x/MyAction.action的时候.
x对应的是{1}, MyAction对应的就是com.mycompany.demo.MyAction.
这样,就能访问了.
这说明.spring没有对class="myAction"及时的初始化. 请问这是为什么?
解决方案 »
- 来杯咖啡,聊聊tomcat,resin并发量
- resin配置问题
- JNA模拟指针输出,赋值给数组怎么实现?
- 求救struts 问题,请大家帮忙看一下,多谢!!
- 再次提问,关于jasperreports的问题
- spring+hibernate问题???
- 请问大家用ejb3.0开发的时候, 用什么工具生成实体bean和dao啊
- ResultSet老是报被关闭,可是我真的没有关系它呜呜
- struts1.1 saveErrors()
- 第一个java helloworld报错,问题在哪不知道,哭
- 关于动态html表单,struts的actionform应该如何设置
- 初学者的问题(急):ejb3通过jndi连接oracle10g数据库出现的问题。
创建工作交给spring管理了吗?没有的话加上看看
<web-app id="WebApp_9" 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">
<display-name>Struts Blank</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<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>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
</web-app>
没.我在struts.properties里声明了:struts.objectFactory = spring现在情况是这样:如果action name="*/*" class={2},就不行.
如果action name = "*" class={1},就OK
用第一种方式的话,老说命名空间错. 命名空间我从来就没用过.
它应该是把第一个"*"当成命名空间了~
Unable to instantiate Action, , defined for 'myAction' in namespace '/'
很清楚了,在spring的bean中的那个action名称前面没有加'/'
spring的bean的id属性名称应该和struts的action的name属性名称相同,spring才能找到那个类帮你IOC
我按网上所说,不要在成员变量或者是构造方法里调用ActionContext,而把它放在其它方法里.
于是我把ServletActionContext放到getters中,
public Long getEnterNumber() {
if(enterNumber == null ) {
enterNumber = Long.parseLong((String)(ServletActionContext.getRequest().getParameter("enterNumber")));
}
return enterNumber;
}
问题依然存在,不知道还有什么原因会导致该问题的呢