Struts2日期转换

在Struts2中,一般的内置类型都会在由系统自动进行转换。但是Date类型好像有的机器可以转换,有的机器不可以转换。比如我这次,本地运行正常,一上测试服务器就不行了。

转换的错误信息如下:

Method “setEndTime” failed for object com.syxp.oa.web.oa.entity.Leave@1163cdc [java.lang.NoSuchMethodException: com.syxp.oa.web.oa.entity.Leave.setEndTime([Ljava.lang.String;)]

因此要想保证系统一定要正确第对Date类型进行转换,就要写一个全局的类型转换类,进行Date与String之间的类型转换。

转换类代码如下:

Java代码  收藏代码
  1. package com.syxp.oa.web.core.util;
  2. import java.text.DateFormat;
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;
  5. import java.util.Map;
  6. import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
  7. public class DateConverter extends DefaultTypeConverter {
  8.     private static final DateFormat[] ACCEPT_DATE_FORMATS = {
  9.             new SimpleDateFormat(“dd/MM/yyyy”),
  10.             new SimpleDateFormat(“yyyy-MM-dd”),
  11.             new SimpleDateFormat(“yyyy/MM/dd”) }; //支持转换的日期格式
  12.     @Override
  13.     public Object convertValue(Map context, Object value, Class toType) {
  14.         if (toType == Date.class) {  //浏览器向服务器提交时,进行String to Date的转换
  15.             Date date = null;
  16.             String dateString = null;
  17.             String[] params = (String[])value;
  18.             dateString = params[0];//获取日期的字符串
  19.             for (DateFormat format : ACCEPT_DATE_FORMATS) {
  20.                 try {
  21.                     return format.parse(dateString);//遍历日期支持格式,进行转换
  22.                 } catch(Exception e) {
  23.                     continue;
  24.                 }
  25.             }
  26.             return null;
  27.         }
  28.         else if (toType == String.class) {   //服务器向浏览器输出时,进行Date to String的类型转换
  29.             Date date = (Date)value;
  30.             return new SimpleDateFormat(“yyyy-MM-dd”).format(date);//输出的格式是yyyy-MM-dd
  31.         }
  32.         return null;
  33.     }
  34. }

 

现在还没有完,另需要在src文件夹下创建xwork-conversion.properties文件,并在里面添加下面的语句,注册类型转换器。

java.util.Date=com.syxp.oa.web.core.util.DateConverter

其中的com.syxp.oa.web.core.util.DateConverter是日期转换类包含命名空间的全称。

到此为止,大功告成!!!!

标签