做SSH整合的时候报java.lang.NoSuchMethodException错误

这是完整的错误信息:
java.lang.NoSuchMethodException: action.CategoryAction.addCategory()
java.lang.Class.getMethod(Class.java:1665)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.getActionMethod(AnnotationValidationInterceptor.java:75)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:47)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:239)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:239)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:161)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:563)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:452)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1087)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:744)

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=false
in your WEB-INF/classes/struts.properties file.

这是配置信息
图片说明

这是Action类
图片说明

求大神们帮帮忙

这是JSP
图片说明

8个回答

Struts我不太懂,但是根据报错的信息还有你的方法,猜测是你没有给方法传参数。
报错是java.lang.NoSuchMethodException: action.CategoryAction.addCategory()
你的方法是 addCategory(Category)

weixin_38299298
HaBinLu 我找到了问题,原来是我Action那里手快写了参数,spring是不支持传入参数的,所以报找不到方法的异常,现在修改之后报了空指针异常
大约 3 年之前 回复

那就看你jsp部分怎么写的了,我猜你有些参数值没传进去,所以报空。打个断点调试一下看在哪报空

weixin_38299298
HaBinLu 回复hero070110220: 还是一样
大约 3 年之前 回复
hero070110220
hero070110220 回复weixin_38299298: 你把参数名改成name="categoryName"
大约 3 年之前 回复
weixin_38299298
HaBinLu 我的表就两个列,id是自增的
大约 3 年之前 回复
weixin_38299298
HaBinLu 我上传了JSP页面的信息了,大神帮忙看看哈
大约 3 年之前 回复
weixin_38299298
HaBinLu <body> <s:form action="categoryAction_addCategory" namespace="/category"> <s:textfield name="category.categoryName" label="类型名" /> <s:submit value="添加" /> </s:form> </body>
大约 3 年之前 回复

很明显,没有找到这个方法,你那个是action类吗?你那个不是实体类吗?话说action类不是这样写的吗?难道是我错了?图片说明

qq_24329545
qq_24329545 厉害!
大约 3 年之前 回复
weixin_38299298
HaBinLu 回复qq_24329545: 那个问题我解决啦,现在是报空指针的问题
大约 3 年之前 回复
qq_24329545
qq_24329545 回复weixin_38299298: 哦哦,那我不太懂这一块了,看报错的信息是没有那个方法,你自己调试一下试试
大约 3 年之前 回复
weixin_38299298
HaBinLu 这可能是旧版的struts吧..我是用了模型,直接把实体类传进来并封装,然后声明一个Service类,之后调用Service的方法这样
大约 3 年之前 回复

no such method ,没有找到这个方法,你的方法名写错了,至于把Auction放进Auction,除非你是用纯struts2,不然不建议这样做,纯粹用来测试用的。
至于空指针一般是嵌套异常,这种打断点一般容易找到。

哦 你用了方法通配符啊,没看到...

报null的异常贴出来,或许是没有ID造成的,试试不用model,直接用属性

可能出现的null就是categoryService,看一下Spring此action下标签下面有没有property中ref 有没有categoryService

问题解决了 首先 在struts的action配置中,class要使用全限定类名,然后引用版主大神的话 categoryService的bean配置的 name属性,记得开头改成小写的,这样的话底层自动从spring容器中通过名称获得内容,然后把action类中的@Component删掉,再把bean中的action删掉就可以了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐