剛剛入門struts2,當往action中傳參的時候,弄了一上午,都提示一下錯誤:
java.lang.NoSuchMethodException: com.....action,java.lang.Class.getMethod()……
網上搜到的解決辦法。發現struts2中action不能含有參數,只能用get、set 方法。
java.lang.NoSuchMethodException 解決辦法
1、Action類沒有繼承structs裡面的DispatchAction或者其它的類
你有沒有試試看 其它的方法能不能用,要是都是這種情況的話,可能是你的Action類沒有繼承structs裡面的DispatchAction或者其它的類。還有你注意下方法的參數列表,類型順序要正確才行,是按照以下順序的:
ActionMapping mapping,ActionForm form
,HttpServletRequest request,HttpServletResponse response。
2、Action 類的方法被定義成 private 類型.
如下 Action 中被訪問的方法被定義成 private 類型.程式在訪問其方法時,會拋出以上異常
3、jar包問題
缺少某些jar檔案或者某些jar檔案有重複。
4、使用struts2架構出現的問題
在頁面使用jquery ajax 調用action中的vaildUname方法,報錯,說我的方法不存在。但實際是存在的。public String vaildUname(String loginName) throws Exception{}問題就在這個參數上,struts2中是不能有參數的
解決方案:
private String loginName;
public String vaildUname() throws Exception{}
loginName的getter和setter方法
這樣在使用ajax調用的時候,就可以了
struts2是通過反射機制來執行action的方法,struts2規範目前action方法是不需要參數的,有參數的方法和沒參數的方法是兩個不同的方法,所以會出現找不到的情況。
5、jar版本不對
應該是3.6jar包的問題,換回3.2的包又沒事了
6、確認你提交的是不是這個action,你的action裡面沒有這個方法