フォーム バインディングを適切に機能させるのに問題がありました (基本的に試行錯誤)。In Play 2.0.3 (Java) フォームを他のオブジェクトで構成されるモデルにバインドする適切な方法は何ですか?
この小さな例を作成して、よりよく理解しようとしました。しかし、この基本的な例でさえ問題があるようです。
フォームをバインドしようとしている単純なクラスには、プレーンな文字列フィールド、文字列のリスト、および文字列の単なるラッパーであるカスタム フィールドの 3 つのフィールドがあります。フォームを送信すると、null のままのカスタム フィールドを除いて、すべてのフィールドが入力されます。
実際のコードはこちら
コントローラ
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()));
}
モデル
public class Simple {
public String text;
public List<String> stringList;
public SimpleWrapper wrappedText;
@Override
public String toString(){
return text +"-"+simpleWrapper+"-"+stringList;
}
public class SimpleWrapper{
String otherText;
public SimpleWrapper(){}
public SimpleWrapper(String otherText){
this.otherText=otherText;
}
@Override
public String toString(){
return otherText;
}
}
意見
@(text:String)
@import helper._
@form(routes.Management.simpleForm()){
<input type="hidden" value="string" name="stringList[0]">
<input type="hidden" value="stringAgain" name="stringList[1]">
<input type="hidden" value="wrapped" name="wrappedText.otherText">
<input type="text" id="text" name="text">
<input type="submit" value="submit">
}
This was passed @text