在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 {
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;}}在根目錄下創建xwork-conversion.properties文件,並在裏面添加下面語句,註冊類型轉換器
java.util.Date = com.text.converter.DateConverter
其中的com.text.converter.DateConverter是日期轉換類包含命名空間的全稱。0
收藏
推薦專欄更多
Ctrl+Enter 發佈
發佈
取消