开发A模块时,会经常用dubbo去调用B模块的接口。
有一次进行新增接口调用时,被调用的B接口是用map接收参数,所以A接口中我使用了BeanUtil.beanToMap(bean1) 把bean1转成map;
B接口接收参数时,再用 BeanUtils.populate(bean2, map)进行map转bean的操作,
然后发现其中接收的available和opType字段在A接口中是没有传值的,但传输到map中是自动给了默认值,如下图显示:
开始以为是基本类型的原因,但改为包装类型同样也被赋值了,我希望接收的参数可以为null,这样保存数据才正确。
解决方案:
通过转换器设置为null时的默认转换值,请注意按照不同的传递参数类型去设置,如下:
ConvertUtils.register(new LongConverter(null), Long.class);
ConvertUtils.register(new ShortConverter(null), Short.class);
ConvertUtils.register(new IntegerConverter(null), Integer.class);
ConvertUtils.register(new DoubleConverter(null), Double.class);
ConvertUtils.register(new BigDecimalConverter(null), BigDecimal.class);
ConvertUtils.register(new BooleanConverter(null), Boolean.class);