【发布时间】:2019-05-28 06:52:55
【问题描述】:
我正在尝试使用 BeanUtilsBean.populate(object, fieldNameVSfieldValueMap) 方法填充 POJO 的字段。
我的 POJO 看起来像:
class POJO{
Integer intField;
Double doubleField
String str;
}
目前我有一个 HashMap,其中包含字段名称和字段值之间的映射。
现在使用以下代码:
POJO obj = new POJO();
Map<String,String> map = new HashMap<>();
map.put("intField", "1");
map.put("doubleField", "1.1");
BeanUtilsBean.populate(obj, map)
使用我的 POJO 对象 obj 中的上述代码,字段 intField 和 doubleField 分别填充值 1 和 1.1,这与预期的一样。
这样做的问题是,字符串字段 str 被分配给它,因为在 str 的哈希图中没有条目,并且 null 是 String 的默认值。 但我想要的是一种明确的方式来将我的自定义值设置为地图中未提及的字段。 对于此示例,假设我想将 str 设置为“john”,因为地图中没有 str 条目。 编辑1: 而且这应该特定于字段类型。因此,如果 POJO 中还有其他字段并且它们是 String 类型,那么对于所有这些 String 字段,在 Map 中没有条目的地方应该使用 John 填充。
编辑 2:POJO 是在我没有提交访问权限的不同项目中定义的,因此在 POJO 本身中设置默认值不是我的解决方案。
【问题讨论】:
-
好吧...只需为该字符串设置一个默认值
String str = "john";,否则它将被 HashMap 中传递的值替换 -
pojo 是在不同的项目中定义的,我没有提交访问权限,因此无法以这种方式设置默认值。而且我有多个领域
-
好的,将此信息添加到您的问题中,因为它非常重要:)
-
fine added :) 我不知何故认为这可以通过 org.apache.commons.beanutils.ConvertUtilsBean 来实现,但在他们的文档中没有很好的帮助
标签: java javabeans apache-commons pojo apache-commons-beanutils