Playframework 2.0 如何将表单字段绑定到Play 2.03中的对象地图

Playframework 2.0 如何将表单字段绑定到Play 2.03中的对象地图,playframework-2.0,databinder,Playframework 2.0,Databinder,尝试将字段绑定到对象的映射时,我遇到了此错误 “*[NullValueInTestedPathException:bean类[models.Simple]的无效属性'wrappedText[index]:无法确定自动增长默认值的属性类型] 从我读到的内容来看,自动签名与试图在飞行中填充地图有关。但这差不多是我得到的 我也遇到了这个问题,它提出了几乎相同的问题,但在SpringMVC的上下文中,我看到公认的答案似乎是建议OP实现他们自己的映射 这背后的原因是什么?还有其他选择吗 型号: publi

尝试将字段绑定到对象的映射时,我遇到了此错误 “*[NullValueInTestedPathException:bean类[models.Simple]的无效属性'wrappedText[index]:无法确定自动增长默认值的属性类型]

从我读到的内容来看,自动签名与试图在飞行中填充地图有关。但这差不多是我得到的

我也遇到了这个问题,它提出了几乎相同的问题,但在SpringMVC的上下文中,我看到公认的答案似乎是建议OP实现他们自己的映射 这背后的原因是什么?还有其他选择吗

型号:

public class Simple {

  public String text;
  public List<String> stringList;
  public TreeMap<String,SimpleWrapper> wrappedText=new TreeMap<String,SimpleWrapper>();
}
控制器

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()));
}
静态表单simpleform=Form(Simple.class);
公共静态结果simpleForm(){
Form filledForm=simpleform.bindFromRequest();
系统输出打印项次(填写表格);
返回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">
}
@(文本:字符串)
@导入助手_
@表单(routes.Management.simpleForm()){
}

这是通过@text

好的,所以我猜我误解了另一个问题的答案。我不必实现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);
}
import org.apache.commons.collections15.Factory;
导入org.apache.commons.collections15.map.LazySortedMap;
公共类简单{
公共字符串文本;
公开名单;
工厂=新工厂(){
公共SimpleWrapper创建(){
返回新的SimpleWrapper();
}
};
publicmap wrappedText=LazySortedMap.decoration(newtreemap(),工厂);
}
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);
}