2012-05-03 7 views
1

私はplayframework 2とextjs4でWebサービスを構築しています。今日まで私はあらゆる障害を克服することができました。しかし、これは私が一人で対処できないものです。私はtutorialに続きましたが、それは私を助けませんでした。まあ、当初はやりました。私はそれが働いたことを知って、私はデータベース(mongodb)にいくつかの値を追加することができた。私はそれが重要である場合を疑うが、:サーバーのフレームワークとextjsでPOST値を受け取れません

  • すべてがうまく働いていた、私は私はJavaでいくつかの他の方法を書いたデシベル
  • にいくつかのテストデータを追加
  • 私はMongoのコレクション
  • サーバー上db.Category.remove()を使用

    :今

私はExt.FormPanel 2のフィールドを持つフォームから任意の値を受け取ることができません

Modelクラスを対応するようになります:

@MongoCollection(name = "Category") 
public class CategoryModel{ 
    private String categoryName; 
    private String categoryDescription; 

    @JsonProperty("categoryName") 
    public String getName() { 
     return categoryName; 
    } 

    @JsonProperty("categoryName") 
    public void setName(String name) { 
     this.categoryName = name; 
    } 

    @JsonProperty("categoryDescription") 
    public String getDescription() { 
     return categoryDescription; 
    } 

    @JsonProperty("categoryDescription") 
    public void setDescription(String description) { 
     this.categoryDescription = description; 
    } 

    public String toString(){ 
     ObjectMapper mapper = new ObjectMapper(); 
     String json = null; 
     try { 
      json = mapper.writeValueAsString(this); 
     } catch (JsonGenerationException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (JsonMappingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return json; 
    } 
} 

そして、私は値を受信したい場所を最後に、ここにある:プレイコンソールから

Form<CategoryModel> categoryForm = form(CategoryModel.class); 
System.out.println(categoryForm); 

出力:

Form(of=class kunto.models.CategoryModel, data={}, value=None, errors={})

FirebugはPOST値が存在していることを示します

categoryDescription test 
categoryName test 

をそして私は、この特定の要求のためのサーバ側で定義されたのconf /ルートでPOST要求タイプを持っている:正しく送信。

私は2つの質問があります:

  • それを修正するために何をすべきかを?
  • さらに重要なことに、なぜそれが起こったのですか?

EDIT @adisが示唆したように:

Form<CategoryModel> categoryForm = form(CategoryModel.class).bindFromRequest(); 
System.out.println(categoryForm); 
System.out.println(categoryForm.data()); 

出力:

Form(of=class kunto.models.CategoryModel, data={categoryName=test, categoryDescription=test}, value=Some({"categoryName":null,"categoryDescription":null}), errors={}) 
{categoryName=test, categoryDescription=test} 

私も

CategoryModel categoryModel = form(CategoryModel.class).bindFromRequest().get(); 
System.out.println(categoryModel); 

をチェックし、それが出力:{"categoryName":null,"categoryDescription":null}

誰でもこれを説明できますか? Contraints.Required @:これはあなたのような、それらを定義した場合にも、あなたのモデルのプロパティで確認しないことができます

Form<CategoryModel> categoryForm = form(CategoryModel.class).bindFromRequest(); 

+0

缶にバインドされている間、説明のためのゲッターが「categoryDe​​scription」にバインドされている。..上記のあなたは、あなたのコード内の不一致を持って

@JsonProperty("description") private String description; 

する必要がありますあなたは試してみてください:Form categoryForm = form(CategoryModel.class).bindFromRequest(); – adis

+0

あなたのコメントのおかげで@adis進歩を見ることができます:D小さな更新で私の質問を編集しました – maialithar

+0

toString()メソッドが間違っているかもしれませんか?あなたがオブジェクトを印刷するとき、javaは常にtoString()メソッドを呼び出しています。あなたはtoString()メソッドを削除して、印刷するのではなく、eclipseでデバッグするだけですか? '@ Required'について – adis

答えて

1

としては、あなたがしてモデルに要求をバインドする必要がコメントしました。

CategoryModel newCatModel = categoryForm.get(); 

これはあなたのポストreqeustからのデータを移植モデルのインスタンスを与える必要があります:

が結合した後は、フォームオブジェクトとgetモデルインスタンスを取得します。通常、この方法は次のようになります。

Form<Task> taskForm = form(Task.class).bindFromRequest(); 

if (taskForm.hasErrors()) { // check for constraints 
    Logger.info("Error:" + taskForm); 
    return badRequest(views.html.task.create.render(taskForm)); 
} 
// here get the model instance 
Task newTask = taskForm.get(); 

希望すると便利です。

+0

:https://play.lighthouseapp.com/projects/82401-play-20/tickets/313私はあなたのソリューションを数日で試してみましょう、助けてくれてありがとう! – maialithar

+0

値は、検証エラーがない場合にのみバインドされます。したがって電子メールが空の場合は、検証エラーが発生しますので、 'get()'メソッドを使用することはできません。これはバグではなく、それが動作する方法です。 –

+0

あなたの助けてくれてありがとう、しかしこれは私の問題を解決しません - 効果は同じです。 – maialithar

0

ゲッターの代わりにプロパティに注釈を付けるべきではありませんか?

​​

セッターが「説明」

+0

あなたの答えをありがとう、setters/gettersの代わりにプロパティに注釈を付けても問題は解決しませんでした。 'desciption'アノテーションは間違いでした。私はコードの早い方に気がついてくれました。それはまだ私の問題の原因ではありませんでした。 – maialithar

関連する問題