天天看點

Struts2相容日期類型轉換器(yyyy-MM-dd 或 yyyy/MM/dd 或 yyyyMMdd)

我想對自己說:既然已經開始了,那就安安靜靜地善終叭。

轉載出處:動力節點 - SSH從入門到精通

package converter;

import java.util.Date;
import java.text.SimpleDateFormat;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.conversion.TypeConversionException;
import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
import com.sun.org.apache.xalan.internal.xsltc.compiler.Pattern;

public class MyDateConverter extends DefaultTypeConverter {

	@SuppressWarnings("unchecked")
	@Override // value:目标轉換值;toType:目标轉換類型
	public Object convertValue(Object value, Class toType) {
		SimpleDateFormat sdf = null; // 建立空的簡單日期格式
		try {
			if (Date.class == toType) { // 前端頁面到伺服器端的資料轉換
				String dateStr = ((String[]) value)[0];
				sdf = getSimpleDateFormat(dateStr); // 調用自定義簡單日期格式轉換函數
				ActionContext.getContext().getSession().put("sdf", sdf); // 将傳回的日期格式存入Session會話
				return sdf.parse(dateStr); // 傳回日期格式的解析結果
			} else if (String.class == toType) { // 伺服器端到前端頁面的資料轉換
				Date date = (Date)value;
				// 從Session會話中擷取存儲的日期格式
				sdf = (SimpleDateFormat)ActionContext.getContext().getSession().get("sdf");
				return sdf.format(date);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return super.convertValue(value, toType); // 傳回最終的日期格式轉換結果
	}

	/**
	 * 根據傳入的參數生成指定的日期格式
	 * @param source
	 * @return
	 */
	private SimpleDateFormat getSimpleDateFormat(String source) {
		SimpleDateFormat sdf = null;
		if (Pattern.matches("^\\d{4}-\\d{2}-\\d{2}$", source)) {
			sdf = new SimpleDateFormat("yyyy-MM-dd");
		} else if (Pattern.matches("^\\d{4}/\\d{2}/\\d{2}$", source)) {
			sdf = new SimpleDateFormat("yyyy/MM/dd");
		} else if (Pattern.matches("^\\d{4}\\d{2}\\d{2}$", source)) {
			sdf = new SimpleDateFormat("yyyyMMdd");
		} else {
			throw new TypeConversionException(); 
		}
		return sdf;
	}
	
}
           

學習就像走路一樣,走得久了身子自然暖和恬适,思考多了腦袋自然靈光。

普通人嘛,不扯什麼锲而不舍,隻求每天能從輸入法回報給自己的輸入字數中看到持平或上漲的資料而心安!

今天也要努力輸入❤!

繼續閱讀