Play2.0 について質問があります :-)。
というモデルがありTask
ます。このタスクには、 というフィールドが含まれていますcreatedBy
。このフィールドには、ログインしているユーザーを入力する必要があります。
私のフィールド宣言は次のようになります。
@ManyToOne
@Constraints.Required
public User createdBy;
ログインしたユーザーがドロップダウン ボックスから説明と優先度を入力できるフォームをレンダリングします。フォームが送信されたら、メソッドを呼び出しますsave()
。save メソッドには、次のコードがあります。
Form<Task> taskForm = form(Task.class).bindFromRequest();
if (taskForm.hasErrors()) {
return badRequest(views.html.tasks.taskCreate.render(taskForm));
}
taskForm.get().save();
フィールドには(有効な)ユーザーが含まれていないため、明らかにTask
保存されません。ユーザーへの唯一の参照は、セッションの主キーではなく、一意のコードcreatedBy
を保存することです。
必須の制約を削除し、保存されたタスクにユーザーをポストフィルした場合にのみ機能します。フォームとユーザーを結び付けるもっと良い方法があるはずですよね?