在使用 beanutils 工具类时,因为beanUtils不提供直接将字符串转换成Date(java.util.Date)数据类型的方法,
查看源码,beanutils支持的转化类型如下:
* java.lang.BigDecimal * java.lang.BigInteger * boolean and java.lang.Boolean * byte and java.lang.Byte * char and java.lang.Character * java.lang.Class * double and java.lang.Double * float and java.lang.Float * int and java.lang.Integer * long and java.lang.Long * short and java.lang.Short * java.lang.String * java.sql.Date * java.sql.Time * java.sql.Timestamp
所以,处理方式有2种,第一是将bean中的Date类型,引入java.sql.Date的包;第二种,就需要自己注册一个转换器。
源码里有提供 DateLocaleConverter
这个类做注册的转化器 ,
ConvertUtils.register(new DateLocaleConverter(), Date.class);
当然,这里也能自己实现,
ConvertUtils.register(new Converter() { @SuppressWarnings("rawtypes") @Override public Object convert(Class arg0, Object arg1) { System.out.println("注册字符串转换为date类型转换器"); if(arg1 == null) { return null; } if(!(arg1 instanceof String)) { throw new ConversionException("只支持字符串转换 !"); } String str = (String)arg1; if(str.trim().equals("")) { return null; } SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try{ return sd.parse(str); } catch(ParseException e) { throw new RuntimeException(e); } } }, java.util.Date.class);
现实环境中,工具类方法例子为:
public static void transMap2Bean(Map<String, Object> map, Object obj) { //ConvertUtils.register(new DateLocaleConverter(), Date.class); ConvertUtils.register(new Converter() { @SuppressWarnings("rawtypes") @Override public Object convert(Class arg0, Object arg1) { System.out.println("注册字符串转换为date类型转换器"); if(arg1 == null) { return null; } if(!(arg1 instanceof String)) { throw new ConversionException("只支持字符串转换 !"); } String str = (String)arg1; if(str.trim().equals("")) { return null; } SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try{ return sd.parse(str); } catch(ParseException e) { throw new RuntimeException(e); } } }, java.util.Date.class); if (map == null || obj == null) { return; } try { BeanUtils.populate(obj, map); } catch (Exception e) { System.out.println("Map<String,Object>转化Bean异常:" + e); } }
相关推荐
### Java完美按格式化字符串String转sql.Date 在Java编程中,经常需要处理日期与时间相关的数据。特别是在数据库操作时,经常会遇到需要将字符串类型的日期转换为`java.sql.Date`类型的情况。本文将详细介绍如何...
String xml = xstream.toXML(obj); System.out.println(xml); MyClass newObj = (MyClass) xstream.fromXML(xml); System.out.println(newObj.getDate()); } } @XStreamAlias("my-class") class MyClass { ...
java.util.Date=cn.itcast.conversion.DateConverter ``` 这样,每当应用程序需要将字符串转换为日期或反之亦然时,都会自动使用指定的`DateConverter`。 #### 四、总结 通过上述介绍,我们可以了解到自定义...
public static String dateToString(java.sql.Date date) { return date.toString(); } ``` **注意事项**: - 在这些转换方法中,应该使用`java.util.Date`类型的变量,因为`java.sql.Date`是`java.util.Date`...
String longDate = longFormat.format(date); System.out.println(longDate); // 输出:Wednesday, 2023年04月05日 } catch (Exception e) { e.printStackTrace(); } } } ``` 在.NET平台,如C#中,我们可以...
在这个文件中,可以指定特定属性的转换器,例如`createtime=cn.itcast.conversion.DateConverter`。 2. **全局注册**:如果希望某个类型转换器在整个应用范围内生效,可以在`WEB-INF/classes`目录下创建`xwork-...
1. 创建一个自定义的`DateConverter`类,继承`DefaultTypeConverter`,实现`String`到`Date`和`Date`到`String`的转换逻辑。 2. 在`xwork-conversion.properties`文件中注册`DateConverter`,映射到`java.util.Date`...
String类型和Date同样预先定义了Converter,这些converter都没有办法进行改变的,所有的String,Date和数值类型都统一采用默认的converter. 2.1 Array Converters Array的配置项目没有上面介绍的那么直观,默认情况下DWR...
String xml = xstream.toXML(person); System.out.println(xml); } } class Person { private String firstName; private String lastName; // 构造器、getter和setter方法... } ``` 这段代码会输出类似...
创建名为`xwork-conversion.properties`的文件,放在`WEB-INF/classes/`目录下,文件内容列出复合类型和对应的类型转换器映射,如`java.util.Date=com.aumy.DateConverter`。 举一个实际应用的例子,如果项目中需要...
<package name="default" extends="struts-default"> <action name="myAction" class="com.example.MyAction"> <result name="success">/success.jsp <param name="date.converter">myDateConverter ``` ...
String xml = xstream.toXML(person); System.out.println(xml); // 反序列化回Java对象 Person deserializedPerson = (Person) xstream.fromXML(xml); System.out.println(deserializedPerson); } } class ...
public Object convertFromString(Map context, String[] values, Class toClass) { String str = values[0]; for (DateFormat df : dfs) { try { return df.parse(str); } catch (ParseException e) { // ...
- 在对应的`Action`类中实现从`String`到`Date`的转换操作。 2. **优点**: - 实现简单,无需额外的配置或自定义转换器。 - 提高了代码的灵活性和可维护性。 3. **缺点**: - 需要在每个需要处理日期字段的`...
<constant name="struts.type.converters.dateConverter.dateFormat" value="yyyy-MM-dd"/> ``` 这行配置指定了日期转换器将使用的日期格式。 ##### 4. 国际化处理 为了实现国际化显示,我们需要创建资源文件,如...
(3)创建日期转换类DateConverter,实现String类型到Date类型的转换。 (4)创建order.jsp页面。 (5)配置springmvc-config.xml文件。 (6)创建一个result.jsp结果页面(置于/WEB-INF/jsp目录下),用于显示接收到订单信息...
String xml = xstream.toXML(person); System.out.println(xml); // 反序列化XML字符串回对象 Person deserializedPerson = (Person) xstream.fromXML(xml); System.out.println(deserializedPerson); } } ``...
Struts2是一个强大的MVC框架,它...可以在struts-default.xml或struts-plugin.xml文件中配置全局的类型转换规则,这样在整个应用或特定包内,所有符合规则的属性都会使用该转换器。例如,设置全局日期转换器: ```xml ...
String xml = xstream.toXML(person); System.out.println(xml); } } class Person { private String name; private int age; // 构造器、getter 和 setter 省略 } ``` 2. 反序列化(XML转Java对象) ```...