• org.apache.commons.beanutils.ConversionException: No value specified


    背景

    框架底层用BeanUtils.copyProperty工具封装对象

    BeanUtils.copyProperty(obj, fieldName, objval);
    

    之前用String一直没问题,后来字段多用IDEA的根据表自动生成对象的功能,生成内容如下。

    问题

    生成的POJO中,数据库DATE类型对应实体中java.sql.Date类型,DATETIME对应实体中java.sql.Timestamp类型。

    只要POJO的字段为 java.sql.Date时间等非内置对象时,如果对象为null则会出现org.apache.commons.beanutils.ConversionException: No value specified异常。

    解决方案

    1.字段类型改为String

    2.注册转换器

    在调用BeanUtils.copyProperty()前注册转换器,注册后sql.date/sql.Timestamp字段类型即可允许为空。

    // 注册sql.date/sql.Timestamp的转换器,即允许BeanUtils.copyProperty时的源目标的sql类型的值允许为空
    ConvertUtils.register(new org.apache.commons.beanutils.converters.SqlDateConverter(null), java.sql.Date.class);
    ConvertUtils.register(new org.apache.commons.beanutils.converters.SqlTimestampConverter(null), java.sql.Timestamp.class);
    BeanUtils.copyProperty(obj, fieldName, objval);
    
  • 相关阅读:
    1036 Boys vs Girls (25 分)
    1028 人口普查 (20 分)
    1004 成绩排名 (20 分)
    4.ServletContext接口
    5 .索引
    7.jQuery 的 基本绑定事件操作
    6.jQuery 操作元素的样式css
    1.servlet简介 + 我的第一个servlet程序
    5.jQuery 的 Class操作
    4.jQuery 操作文本内容
  • 原文地址:https://www.cnblogs.com/aeolian/p/14061319.html
Copyright © 2020-2023  润新知