0

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

从我读过的内容来看,自动增长与尝试动态填充地图有关..但这与我得到的差不多..

我也遇到了这个问题,它提出了几乎相同的问题,但在 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

4

1 回答 1

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);
}
于 2012-10-18T13:34:44.257 回答