Struts2日期类型转换

来源:互联网 发布:windows 抓包工具 编辑:程序博客网 时间:2024/04/26 18:12

      在Struts2中,一般的内置类型都会由系统自动进行类型转换。比如从String类型转换为Int类型等,但是Date(java.util.Date)类型在由系统进行类型转换时,好像有时候行,有时候不行。比如我这次,本地运行正常,一上测试服务器就不行了。

      因此要想使应用系统一定能正确对Date类型进行转换,最好写一个全局的类型转换类,进行Date与String之间的类型转换。

      这个转换类是从网上看的:

 

 

package com.great.util;

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

import com.opensymphony.xwork2.conversion.impl.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) {
  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.czx.util.DateConverter
其中的com.czx.action.DateConverter是日期转换类包含命名空间的全称。

原创粉丝点击