struts2日期類型轉換

        在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")
};  //支持轉換的日期格式
@Override
public Object convertValue(Map context, Object value, Class toType) {
// TODO Auto-generated method stub
if (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

收藏

chausa

25篇文章,7W+人氣,0粉絲

Ctrl+Enter 發佈

發佈

取消

掃一掃,領取大禮包

0

1
分享
chausa
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章