Struts2 action中不要將方法以get開頭!!!
阿新 • • 發佈:2019-01-29
Struts2 action中不要將方法以get開頭
Struts2 action中不要將方法以get開頭
Struts2 action中不要將方法以get開頭
重要的事情說三遍!今天除錯jquery傳送請求到action中我寫的三個方法回一次執行。審查程式碼一點問題都沒有
我寫的程式碼如下:
/** * */ package com.artpri.artist.action; import java.util.List; import com.opensymphony.xwork2.Action; /** * * @author 王校兵 * @version 1.0, 2016年4月6日 */ public class GetQueryAlbumPhotoAction extends BaseAction { private List photoList;// 照片的查詢結果集合 private String queryTime;// 要查詢照片的拍攝時間條件 private String queryCategory;// 要查詢的年代條件 private String queryTitle;// 要查詢的標題條件 /** * 通過相簿分類查詢相簿照片action方法 * @return 頁面跳轉對應的邏輯程式碼 * */ public String getPhotoByCategory() { System.out.println("getPhotoByCategory-------------------------------" + queryCategory); photoList = getAlbumPhotoMangeService().getPhotoByCategory(queryCategory); return Action.SUCCESS; } /** * 通過拍攝時間查詢相簿照片action方法 * @return 頁面跳轉對應的邏輯程式碼 * */ public String getPhotoByTime() { System.out.println("getPhotoByTime-------------------------------" + queryTime); photoList = getAlbumPhotoMangeService().getPhotoByTime(queryTime); return Action.SUCCESS; } /** * 通過照片標題查詢相簿照片action方法 * @return 頁面跳轉對應的邏輯程式碼 * */ public String getPhotoByTitle() { System.out.println("getPhotoByTitle-------------------------------" + queryTitle); photoList = getAlbumPhotoMangeService().getPhotoByTitle(queryTitle); return Action.SUCCESS; } public List getPhotoList() { return photoList; } public String getQueryCategory() { return queryCategory; } public String getQueryTime() { return queryTime; } public String getQueryTitle() { return queryTitle; } public void setPhotoList(List photoList) { this.photoList = photoList; } public void setQueryCategory(String queryCategory) { this.queryCategory = queryCategory; } public void setQueryTime(String queryTime) { this.queryTime = queryTime; } public void setQueryTitle(String queryTitle) { this.queryTitle = queryTitle; } }
他們會依次執行。因為action中 ajax模式下,呼叫的action方法不能為get*方式命名,內中機理未知。
於是就把get開頭的方法修改了一下,程式就執行正常了,繼續找了下原因,最後基本上明白。 個人認為,出現這個問題的原因是因為,action中屬性都是以get set方式設定的,這樣strut2才能根據反射進行設定,但是當action結束的時候, 就會呼叫相應的get方法取值,所以導致get開頭的method執行了兩次。
所以