尝试将字段绑定到对象映射时出现此错误 “* [NullValueInNestedPathException:bean类[models.Simple]的无效属性'wrappedText [index]':无法确定自动生成默认值的属性类型]
从我读过的内容来看,自动增长与尝试在飞行中填充地图有关..但这与我得到的一样多。
我也遇到了这个question几乎同样的问题但是在Spring MVC的上下文中,我看到接受的答案似乎是建议OP实现他们自己的地图 这背后的原因是什么,还有另一种选择吗?
模特:
public class Simple {
public String text;
public List<String> stringList;
public TreeMap<String,SimpleWrapper> wrappedText=new TreeMap<String,SimpleWrapper>();
}
...
public class SimpleWrapper {
String singleString;
public void setSingleString(String singleString){
this.singleString=singleString;
}
public String getSingleString(){
return singleString;
}
public SimpleWrapper(){
this.singleString=singleString;
}
控制器
static Form<Simple> simpleform=form(Simple.class);
public static Result simpleForm(){
Form<Simple> filledForm=simpleform.bindFromRequest();
System.out.println(filledForm);
return ok(views.html.simpleForm.render(filledForm.get().toString()));
}
查看
@(text:String)
@import helper._
@form(routes.Management.simpleForm()){
<input type="hidden" value="string" name="stringList[0]">
<input type="hidden" value="string Again" name="stringList[1]">
<input type="hidden" value="mapp value" name="wrappedText[index].singleString">
<input type="text" id="text" name="text">
<input type="submit" value="submit">
}
这是通过@text
答案 0 :(得分:1)
好的,我想我误解了另一个问题的答案。我没有实现一个LazyMap,因为apache-commons的人已经这样做了。
我最后修改了我的模型:
<强>模型强>
import org.apache.commons.collections15.Factory;
import org.apache.commons.collections15.map.LazySortedMap;
public class Simple {
public String text;
public List<String> stringList;
Factory<SimpleWrapper> factory = new Factory() {
public SimpleWrapper create() {
return new SimpleWrapper();
}
};
public Map<String,SimpleWrapper> wrappedText =LazySortedMap.decorate(new TreeMap<String,SimpleWrapper>(),factory);
}