今天在使用Struts2.0做登錄時,突然出現java.lang.NoSuchMethodException的問題,
檢查了許久發現是在Action中在定義方法出現問題,自定義的方法是不能帶參數的,可以通過別的方式去帶一些動態的參數值,xxx.action?param=xxxx,用Request去取這個參數。如果你帶了參數,在頁面要執行方法時會找不到此方法,就會出現上面的錯誤。
Struts2中Action接收參數的方法主要有以下三種:
1.使用Action的屬性接收參數:
a.定義:在Action類中定義屬性,創建get和set方法;
b.接收:通過屬性接收參數,如:userName;
c.發送:使用屬性名傳遞參數,如:user1!add?userName=Magci;
2.使用DomainModel接收參數:
a.定義:定義Model類,在Action中定義Model類的對象(不需要new),創建該對象的get和set方法;
b.接收:通過對象的屬性接收參數,如:user.getUserName();
c.發送:使用對象的屬性傳遞參數,如:user2!add?user.userName=MGC;
3.使用ModelDriven接收參數:
a.定義:Action實現ModelDriven泛型接口,定義Model類的對象(必須new),通過getModel方法返回該對象;
b.接收:通過對象的屬性接收參數,如:user.getUserName();
c.發送:直接使用屬性名傳遞參數,如:user2!add?userName=MGC
以下只介紹通過Action的屬性接收參數例子
jsp頁面代碼:
Action中通過set、get方法獲取,代碼:
注意的是loginAcc(Account account)這樣寫是錯誤的。以上僅代表個人觀點,歡迎大家拍磚(*^_^*)