0

フィールドをオブジェクトのマップにバインドしようとすると、「*[NullValueInNestedPathException: Invalid property 'wrappedText[index]' of bean class [models.Simple]: Could not determine property type for auto-growing a default value] 」というエラーが発生しました

私が読んだことから、自動拡張はオンザフライでマップにデータを入力しようとすることに関係しています..しかし、それは私が得たのと同じくらいです..

また、事実上同じ質問をするこの質問に出くわしましたが、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

わかりましたので、他の質問への答えを誤解したと思います.apache-commonsの担当者がすでに実装しているため、LazyMapを実装する必要はありませんでした。

私は自分のモデルをこれに変更することになりました:

モデル

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 に答える