使用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里没有这个方法