在 java beanutils.populate 上解析列表<Object>
Parse List<Object> on java beanutils.populate
我是 java beanutils 的新手,我真的很难弄清楚如何才能做到这一点。
我可以从 Html FORM 中获取所有字段,并填充 beanutils.populate(Object, request.getParamterMap());
一切正常,甚至映射为 "CustomClass someobj" 的字段,我遇到了一点麻烦,但是通过将表单输入字段指定为 "someobj.field",我可以得到正确的结果。
现在我需要做一个地图作为 List listobj 但我不知道怎么做。
尝试将表单名称设为 "listobj[].field", "listobj.[].field", "listobj.[]field", "listobj[][field]"
,但这项工作的 none。我可以通过 setProperty("listobj",List<CustomClass>);
手动完成
我明白了。
对于遇到同样问题的任何人,我所做的是:
以Html形式
name="indexedListobj[listobj.id].field"
我正在使用休眠,所以我的对象现在是 Set<CustomClass> listobj
而不是 List<CustomClass> listobj
以防止收集异常。
我所做的是创建另一种方法来检查 Set 中对象的索引,然后,如果存在则更新对象,或者如果不存在则附加一个新对象。像这样:
public CustomClass getindexedListobj(int index) {
CustomClass tmp = null;
for(CustomClass o : this.listobj)
if(o.getId() == index) {
tmp = o;
break;
}
if(tmp == null) {
tmp = new CustomClass();
this.listobj.add(tmp);
}
return tmp;
}
我是 java beanutils 的新手,我真的很难弄清楚如何才能做到这一点。
我可以从 Html FORM 中获取所有字段,并填充 beanutils.populate(Object, request.getParamterMap());
一切正常,甚至映射为 "CustomClass someobj" 的字段,我遇到了一点麻烦,但是通过将表单输入字段指定为 "someobj.field",我可以得到正确的结果。
现在我需要做一个地图作为 List listobj 但我不知道怎么做。
尝试将表单名称设为 "listobj[].field", "listobj.[].field", "listobj.[]field", "listobj[][field]"
,但这项工作的 none。我可以通过 setProperty("listobj",List<CustomClass>);
我明白了。 对于遇到同样问题的任何人,我所做的是:
以Html形式
name="indexedListobj[listobj.id].field"
我正在使用休眠,所以我的对象现在是 Set<CustomClass> listobj
而不是 List<CustomClass> listobj
以防止收集异常。
我所做的是创建另一种方法来检查 Set 中对象的索引,然后,如果存在则更新对象,或者如果不存在则附加一个新对象。像这样:
public CustomClass getindexedListobj(int index) {
CustomClass tmp = null;
for(CustomClass o : this.listobj)
if(o.getId() == index) {
tmp = o;
break;
}
if(tmp == null) {
tmp = new CustomClass();
this.listobj.add(tmp);
}
return tmp;
}