6

私は Play2 を初めて使用し (既に Play1 を使用してプロジェクトを開発しました)、リクエストからのフォーム バインディングに問題があります。フォームに関するドキュメントは非常に軽量です。

ここに私のコントローラーのコードがあります:

private final static Form<Estimation> estimationForm = form(Estimation.class);

/**
 * Get an estimation by form
 * @return
 */
public static Result estimation() {
    return ok(views.html.rate.estimation.render(
        estimationForm,
        City.findAll()
    ));
}

/**
 * Display estimation results
 * @return
 */
public static Result results() {
    if (request().method().equals("POST")) {
        Form<Estimation> form = estimationForm.bindFromRequest();
        if (form.hasErrors()) {
            System.out.println(form.errorsAsJson().toString());
            return ok(views.html.rate.estimation.render(
                form
                City.findAll()
            ));
        }
        else {
            System.out.println(form.get());
            return ok(views.html.rate.results.render(

            ));
        }
    }
    else {
        return estimation();
    }
}

私はこのように選択して都市を表示します:

<select id="city" name="city">      
    <option value="1">Paris, France</option>
    <option value="2">Lyon, France</option>
    <option value="3">Marseille, France</option>
    <option value="4">Barcelona, Spain</option>
    <option value="5">Berlin, Germany</option>
</select>

フォームを送信すると、次のエラーが表示されます: {"city":["Invalid value"]}

ここに私の質問があります: バインダーは単純なフィールド (たとえば、私のモデルの String プロパティ) でうまく機能するようですが、@ManyToOne 関係はどうですか?

ありがとうございました。

4

1 に答える 1

9

選択フィールドの名前を次のように設定しますname="city.id"

于 2012-08-26T21:11:18.023 に答える