1. 程式人生 > >Struts2 action中不要將方法以get開頭!!!

Struts2 action中不要將方法以get開頭!!!

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執行了兩次。
所以

Struts2 action中不要將方法以get開頭