BeanUtils的populate方法之日期处理

BeanUtils的populate方法之日期处理BeanUtils的populate方法之日期处理BeanUtils.populate(Obj,Map);可以使map转对象,但是如果是Obj有个日期字段而Map中这个字段为空时候就会报错,无法赋值,这个时候就需要一个日期转换器!首先写一个日期转换器packagecom.hzdl.examination.web;importorg.apache.commons.beanutils.BeanUtilsBean;importorg.apache.commons.beanutils.Conve

大家好,又见面了,我是你们的朋友全栈君。

BeanUtils的populate方法之日期处理

BeanUtils.populate(Obj, Map);可以使map转对象,但是如果是Obj有个日期字段而Map中这个字段为空时候就会报错,无法赋值,这个时候就需要一个日期转换器!

首先写一个日期转换器

package com.hzdl.examination.web;

import org.apache.commons.beanutils.BeanUtilsBean;
import org.apache.commons.beanutils.ConvertUtilsBean;
import org.apache.commons.beanutils.Converter;
import org.apache.commons.beanutils.PropertyUtilsBean;

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

public class DateTimeConverter implements Converter { 
   
    private static final String DATE = "yyyy-MM-dd";
    private static final String DATETIME = "yyyy-MM-dd HH:mm:ss";
    private static final String TIMESTAMP = "yyyy-MM-dd HH:mm:ss.SSS";

    @Override
    public Object convert(Class type, Object value) { 
   
        // TODO Auto-generated method stub
        return toDate(type, value);
    }

    public static Object toDate(Class type, Object value) { 
   
        if (value == null || "".equals(value))
            return null;
        if (value instanceof String) { 
   
            String dateValue = value.toString().trim();
            int length = dateValue.length();
            if (type.equals(java.util.Date.class)) { 
   
                try { 
   
                    DateFormat formatter = null;
                    if (length <= 10) { 
   
                        formatter = new SimpleDateFormat(DATE, new DateFormatSymbols(Locale.CHINA));
                        return formatter.parse(dateValue);
                    }
                    if (length <= 19) { 
   
                        formatter = new SimpleDateFormat(DATETIME, new DateFormatSymbols(Locale.CHINA));
                        return formatter.parse(dateValue);
                    }
                    if (length <= 23) { 
   
                        formatter = new SimpleDateFormat(TIMESTAMP, new DateFormatSymbols(Locale.CHINA));
                        return formatter.parse(dateValue);
                    }
                } catch (Exception e) { 
   
                    e.printStackTrace();
                }
            }
        }
        return value;
    }
			//调用此方法封装bean map为requeset.getParamteMap,object为空对象
    public static void transMap2Bean(Map<String, Object> map, Object obj) { 
   

        try { 
   
            DateTimeConverter dtConverter = new DateTimeConverter();
            ConvertUtilsBean convertUtilsBean = new ConvertUtilsBean();
            convertUtilsBean.deregister(Date.class);
            convertUtilsBean.register(dtConverter, Date.class);
            BeanUtilsBean beanUtilsBean = new BeanUtilsBean(convertUtilsBean,
                    new PropertyUtilsBean());
            beanUtilsBean.populate(obj, map);

        } catch (Exception e) { 
   

        }

        return;

    }


}


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158770.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • UVA 322 ships (POJ 1138)

    UVA 322 ships (POJ 1138)

    2022年1月24日
    35
  • taskscheduler java_Spring TaskScheduler使用实例解析

    taskscheduler java_Spring TaskScheduler使用实例解析这篇文章主要介绍了SpringTaskScheduler使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下TaskScheduler提供对计划任务提供支持;使用@EnableScheduling开启计划任务支持使用@Scheduled来注解计划任务的方法;示例演示后台间断执行任务和定时计划任务计划任务的配置@Configuration@…

    2022年10月11日
    3
  • 网管工具软件_netscan

    网管工具软件_netscan转发:http://baike.baidu.com/view/1358799.htmCacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。Cacti是通过snmpget来获取数据,使用RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、

    2022年10月5日
    6
  • 我的大学生活

    我的大学生活

    2021年8月10日
    66
  • 有没有提醒喝水的打卡软件_小爱同学定时打卡

    有没有提醒喝水的打卡软件_小爱同学定时打卡本文方案来自CSDN博主「机灵鹤」方案详情可查看原文:https://smartcrane.blog.csdn.net/article/details/121837850本项目实现了一个久坐提醒和喝水提醒的小助手,在检测到连续工作较长时间之后,会打印纸条,提醒我们起身活动一下;在设定的喝水时间到了以后,也会打印纸条,提醒我们去喝水。项目用到的硬件设备有:硬件都备的差不多了,在开发时我遇到了一个比较棘手的问题,就是咕咕机跟人体传感器它也不是同一家的设备啊!虽然两家都有各自的控制APP,但是它们毕竟是两套系

    2022年10月1日
    2
  • java多线程中的join方法详解[通俗易懂]

    java多线程中的join方法详解[通俗易懂]java多线程中的join方法详解 方法Join是干啥用的?简单回答,同步,如何同步?怎么实现的?下面将逐个回答。   自从接触Java多线程,一直对Join理解不了。JDK是这样说的:joinpublicfinalvoidjoin(longmillis)throwsInterruptedExceptionWaitsatmostmillismi

    2022年5月29日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号