`

Action[/***] does not contain specified method (check logs)

 
阅读更多

今天利用SS1H框架整合做练习的时候,出现了一个Action中没有包含指定方法的Exception

 

异常信息:

 

2011-8-18 20:50:07 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet action threw exception
java.lang.NoSuchMethodException: Action[/userAction] does not contain specified method (check logs)
	at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:261)
	at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
	at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:113)
	at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
	at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
	at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
	at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
	at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
	at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
	at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Thread.java:619)

 

 

想到了是自定义Action类中的方法调用时出现了问题。

 

从头到尾检查了N遍配置文件以及页面调用传参等代码块都未发现问题。。

 

许久后终于……

 

错误代码:

 

public ActionForward doQuery(ActionMapping mapping, ActionForm form,
			ServletRequest request, ServletResponse response) throws Exception {

		//内部实现略

}
 
 

原来问题出在方法的参数中。这也怪自己偷鸡不成蚀把米。

本想偷懒一下,直接利用重写DispatchAction类中的execute方法,改一下名字后直接使用。

没想到,粗心选错,重写了Action类中的execute,结果可想而知。。。

 

解决方案:

 

public ActionForward doQuery(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {

		//内部实现略

}

 

 

顺便分享一下出现此异常的其他几种情况:

 

1、自定义Action类需要继承DispatchAction类。

2、方法参数ActionMapping mapping, ActionForm form,

                 HttpServletRequest request, HttpServletResponse response 顺序也需一致

3、方法的访问修饰符设置为public、不是protected,更不是其他。
4、动态调用Action,在struts-config.xml中要配置Action的parameter参数

     参数是页面传值的参数,值与要执行Action中的方法名相同

      

  <action-mappings >
  	<action
  		path="/userAction"
  		type="org.springframework.web.struts.DelegatingActionProxy"
  		name="userForm"
  		parameter="method" >
  		<forward name="success" path="/index.jsp"></forward>
  		<forward name="error" path="/error.jsp"></forward>
  	</action>
  </action-mappings>

 

 

 

 

 
<html:form action="userAction.do?method=doQuery" method="post">
    	Name:<html:text property="user.fname"></html:text>
    	Area:<html:text property="user.farea"></html:text>
    	<html:submit value="Search Flowers"></html:submit>
</html:form>
 
 

5、页面表单提交方式为post,否则也有可能出现这种异常。

 

分享到:
评论
1 楼 xing_yeli 2015-06-18  
谢谢大神!!

相关推荐

    xcode报错SDK does not contain 'libarclite' at the path

    然而,开发者们时常会遇到各种各样的错误,其中“SDK does not contain 'libarclite' at the path”是一个常见的问题,主要与Apple的Automatic Reference Counting (ARC)机制有关。本文将深入探讨这个错误的原因、...

    SDK does not contain 'libarclite'

    标题中的问题"SDK does not contain 'libarclite'"指的是某个SDK缺少一个名为`libarclite`的库文件。这可能是一个错误或者是因为SDK未完整安装或配置不当导致的。 `libarclite`是一个特定的库,尤其在Android开发中...

    mybatisMapped报错 Statements collection does not contain value for

    ### mybatisMapped报错 Statements collection does not contain value for 在使用MyBatis框架进行数据库操作时,可能会遇到“Mapped Statements collection does not contain value for”这样的错误提示。这通常...

    xcode 15 找不到libarclite 等文件

    clang: error: SDK does not contain 'libarclite' at the path '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a'; try increasing the ...

    apache-maven-3.5.4

    - Check that Maven settings.xml does not contain http repositories - Check that Maven pom files do not contain http repository ----- - Check that Maven pom files do not contain http repository ----- -...

    经典的DSP的C程序和汇编程序库

    /* In the VMS compiler, M_PI is not defined in math.h */ #ifdef vms #define M_PI 3.14159265358979323846 #endif #ifndef KR #define M_PI 3.14159265358979323846 #endif #define FALSE 0 #define TRUE 1 #...

    CSS 竖导航 样式

    /* 去除默认的点状列表 */ padding: 0; /* 清除内边距 */ } .vertical-nav li { width: 150px; /* 定义列宽 */ margin-bottom: 10px; /* 设置行间距 */ } .vertical-nav a { display: block; /* 全部占...

    高考英语3500单词第13讲(单词速记与拓展).pdf

    - **contain** (v.) 包含; 包括; 容纳 - **词根词缀**:con- (共同) + -tain- (握, 持有) - **container** (n.) 容器 - **词根词缀**:contain + er #### 9. **contemporary** / **content** / **content** - **...

    libarclite-arc

    解决 Xcode 14.3,Xcode 15 旧项目可能报错 SDK does not contain 'libarclite' at the path '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphone...

    奔跑的大白熊.rar

    } /* 初始位置 */ 50% { transform: translateX(100px); } /* 跑到一半时的位置 */ 100% { transform: translateX(-100px); } /* 回到初始位置,形成奔跑循环 */ } ``` 接下来,我们需要将这个动画应用到HTML...

    【小练习03】CSS-表格(table)--天气预报

    /* 合并边框 */ width: 100%; /* 全宽度 */ } th, td { text-align: center; /* 文本居中 */ padding: 8px; /* 单元格内边距 */ border: 1px solid #ddd; /* 边框 */ } th { background-color: #f2f2f2; /* ...

    iOS Xcode SDK does not contain 'libarclite'

    xcode 运行支持的arc文件,报错信息:SDK does not contain 'libarclite'

    背景自适应文字宽度的css按钮

    /* 让a标签具有块级元素的特性 */ background-image: url('按钮背景图片地址'); /* 设置背景图片 */ background-size: auto; /* 自适应宽度 */ background-repeat: no-repeat; /* 防止背景图片重复 */ padding:...

    ZIP 压缩 解压缩 源码

    /* tm_unz contain date/time info */ typedef struct UZ_s { unsigned int tm_sec; /* seconds after the minute - [0,59] */ unsigned int tm_min; /* minutes after the hour - [0,59] */ unsigned int tm_...

    GEE错误-Dictionary does not contain key constant.pdf

    The error is " List (Error) Dictionary.getNumber: Dictionary does not contain key:constant." Would be generous to take some time out and help me correct the error? 我无法纠正代码中的错误。错误如下 ...

    html磨砂玻璃效果

    /* 保持元素位置相对,以便于添加绝对定位的子元素 */ overflow: hidden; /* 防止内容溢出 */ background-image: url('你的背景图片地址'); /* 如果有背景图片 */ background-size: cover; /* 背景图片铺满整个...

    反编译工具ILSpy.exe

    ILSpy.exe是一款强大的开源反编译工具,专为.NET Framework和.NET Core应用程序设计。它允许开发者查看、理解和分析编译后的.NET程序集的内部结构,包括IL(中间语言)代码、元数据、类、方法、属性和事件等。...

    css-has-pseudo:相对于其他元素的样式元素

    has( + p) { /* style level 1 headings that are followed by a paragraph */}section : not ( : has ( h1 , h2 , h3 , h4 , h5 , h6 )) { /* style sections that don’t contain any heading elements */}body :...

    rh-dotnet31-dotnet-host-3.1.0-1.el7.x86_64.rpm

    官方离线安装包,亲测可用

    webbrowser滚动条隐藏

    /* 隐藏横向滚动条 */ } ::-webkit-scrollbar-thumb { background: transparent; /* 隐藏纵向滚动条 */ } ``` 然而,这种方法只适用于基于WebKit的浏览器。对于Firefox和其他非WebKit浏览器,我们需要使用不同的...

Global site tag (gtag.js) - Google Analytics