struts关于多个时间需要转换

来源:互联网 发布:daxulu域名更换 编辑:程序博客网 时间:2024/05/01 23:15

前提:

类型转换需要实现defaultTypeconverter的public Object convertValue(Map<String, Object> context, Object value, Class toType) 方法

有全局类型转转换和局部类型转换,后者会覆盖前者

全局写法:在src下建xwork.conversion.properties文件

局部写法:在当前类下建ActionName.conversion.properties文件。

定义时间转换类DateConverter

public class DateConverter extends DefaultTypeConverter

说明:在这里我们以对时间转换为例,并且分别在全局和局部下传多个和一个时间进行对比。

一个局部:

                  jsp:创建开始日期:<input type="text" name="strartDate" value="11111111">格式yyyyMMdd<br>

                  Action类:private Date strartDate;

                  ActionName.conversion.properties:     strartDate=DateConverter全路径

                 DateConverter主要代码:

if(toType!=java.util.Date.class){return null;}if(value instanceof java.lang.String[]){String [] strDate = (String[])value;SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");//定义转换的格式Date date = null;try {date = format.parse(strDate[0]);} catch (ParseException e) {return null;}return date;}

一个全局:

                   jsp:创建开始日期:<input type="text" name="strartDate" value="11111111">格式yyyyMMdd<br>

                  Action类:private Date strartDate;

                  ActionName.conversion.properties:     java.util.Date=DateConverter全路径

                  DateConverter主要代码:

if(toType!=java.util.Date.class){return null;}if(value instanceof java.lang.String[]){String [] strDate = (String[])value;SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");//定义转换的格式Date date = null;try {date = format.parse(strDate[0]);} catch (ParseException e) {return null;}return date;}

多个局部:

                  jsp:创建开始日期:<input type="text" name="strartDate" value="11111111">格式yyyyMMdd<br>

                         创建结束日期:<input type="text" name="strartDate" value="22222222">格式yyyyMMdd<br>

                  Action类:private Date[] strartDate;

                  ActionName.conversion.properties:     strartDate=DateConverter全路径                

                  DateConverter主要代码:

if(toType !=java.util.Date.class[]){System.err.println("进来3");return null;}if(value instanceof String[]){System.err.println("进来4");Date[] Dates = new Date [2];String[] DateArray = (String[])value;SimpleDateFormat format = new SimpleDateFormat("yyyMMdd");System.out.println(DateArray.length+"长度");for(int i = 0;i<DateArray.length;i++){try {Dates[i] = format.parse(DateArray[i]);System.out.println("************"+Dates[i]);} catch (ParseException e) {// TODO Auto-generated catch blockreturn null;}}return Dates;}

多个全局:

                  jsp:创建开始日期:<input type="text" name="strartDate" value="11111111">格式yyyyMMdd<br>

                         创建结束日期:<input type="text" name="strartDate" value="22222222">格式yyyyMMdd<br>

                  Action类:private Date[] strartDate;

                  ActionName.conversion.properties:     java.util.Date=DateConverter全路径                
                  DateConverter主要代码:

if(toType !=java.util.Date.class){System.out.println("全局时他传的是一个Date类型不是Date类型数组");return null;}if(value instanceof java.lang.String){String DateStr = (String)value;SimpleDateFormat format = new SimpleDateFormat("yyyMMdd");Date dates = null;try {dates = format.parse(DateStr);} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}return dates;}else {System.out.println("全局时传的是一个字符串,不是字符串数组");}

总结:

传一个不管全局还是局部toType不是数组   value是数组

传多个时全局:toType不是数组,分多次传每传一个,value也不是娄数组

传多个时局部:totype是数组一次传,value是数组

0 0
原创粉丝点击