2

フォームには、日付用と時間用の 2 つの入力が必要です。私のモデルでは、java.util.Date 型の 1 つのプロパティにすぎません。Play フレームワーク 2 を使用して、html の生成を処理し、入力フィールドをモデルの日付プロパティにバインドするためのベスト プラクティスは何ですか?

フィールドコンストラクターを使用すると、必要な方法でフォームをレイアウトできないことに注意してください。1 行目にラベル、2 行目に 2 つの入力、3 行目に検証エラーが必要です。代わりに生のhtmlを使用する必要がありますか? その場合、検証エラーと制約に引き続きアクセスできますか?

4

1 に答える 1

3

モデルで 2 つの別々のフィールドを使用している場合は、バインドする方が確かに簡単です。1 つのアイデアは、フォーム送信にバインドする中間クラスを作成することです。

// Controller

public static class FormSubmission {
  public Date date;
  public Date time;
}

public static Result submitForm() {
  Form<FormSubmission> filledForm = form(FormSubmission.class).bindFromRequest();
  if (filledForm.hasErrors()) {
    return badRequest();
  } else {
    ModelClass model = new ModelClass(); // fetch first if you update
    // Copy all values from form submission to the model
    model.dateAndTime = combineDateAndTime(filledForm.get().date, filledForm.get().time);
  }
  return ok();
}

// View
@(form: Form[FormSubmission])
...

(これが役に立たないことはわかっていますが、このようなタスクは Scala では非常に簡単です。)

于 2012-12-18T11:33:52.063 に答える