使用struts2时java.lang.NoSuchMethodException: com…..action报错的原因以及解决方法



使用struts2时java.lang.NoSuchMethodException: com…..action报错的解决方法,出现这样的错误的原因是什么?主要的原因可能有以下几个:

1、java.lang.NoSuchMethodException: 是因为Action 类的方法被定义为 private 类型.

假如struts2 Action 中被访问的方法被定义成 private 类型.程序在访问其方法时,会抛出以上异常

 2、Action类没有继承structs2的DispatchAction类或其它的类

试试看 如果其它的方法能不能用都是这种情况的话,这时候你可以考虑Action类没有继承structs2的DispatchAction或者其它的类。另外还有注意方法的参数列表,类型顺序要正确才行,是按照以下顺序的:

ActionMapping mapping,ActionForm form ,HttpServletRequest request,HttpServletResponse response。


3、缺少jar包java.lang.NoSuchMethodException问题

在项目中缺少某些jar文件或者某些jar文件有重复。

4、jar版本不对

很可能是是3.6jar包的问题,假如换回3.2的包又没事了

5、struts2框架出现的问题
页面中用jquery ajax 调用action的vaildUname方法,报java.lang.NoSuchMethodException错,说方法不存在。但是存在的。public String vaildUname(String loginName) throws Exception{}问题就在这个参数上,struts2中是不能有参数的
问题解决方法:
private String loginName;
public String vaildUname() throws Exception{}
loginName的getter和setter方法
此后使用ajax调用的时候,就没有问题了,struts2通过反射机制来执行action的方法,struts2规范中的action方法是不需要参数的,有参数的方法与无参数的方法是不同的方法,因此会出现找不到的问题。

6、确认你提交的是否是这个action,action里没有这个方法