在Struts2中,在瀏覽器提交和服務器輸出的時候,通常的內置類型都會在由系統自動進行轉換,可是發現Date日期類並無被系統處理過程當中進行自動轉換(@_@),這個問題並非絕對性的,在百度中搜索過,有些場合會進行自動轉換,有些場合則不會。 當系統沒有爲Date進行自動轉換的時候,能夠寫一個全局的類型轉換類,進行Date與String之間的類型轉換。
代碼以下:
package com.text.converter;//命名空間看項目具體而定
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import ognl.DefaultTypeConverter;
public class DateConverter extends DefaultTypeConverter {java
private static final DateFormat[] ACCEPT_DATE_FORMATS = {new SimpleDateFormat("dd/MM/yyyy"),new SimpleDateFormat("yyyy-MM-dd"),new SimpleDateFormat("yyyy/MM/dd")}; //支持轉換的日期格式@Overridepublic Object convertValue(Map context, Object value, Class toType) {// TODO Auto-generated method stubif (toType == Date.class) { //瀏覽器向服務器提交時,進行String to Date的轉換Date date = null;String dateString = null;String[] params = (String[])value;dateString = params[0]; //獲取日期的字符串for (DateFormat format : ACCEPT_DATE_FORMATS) {try {return format.parse(dateString); //遍歷日期支持格式,進行轉換} catch(Exception e) {continue;}}return null;}else if (toType == String.class) { //服務器向瀏覽器輸出時,進行Date to String的類型轉換Date date = (Date)value;return new SimpleDateFormat("yyyy-MM-dd").format(date); //輸出的格式是yyyy-MM-dd}return null;}}