0

コントローラー内のフォームの必須フィールドを検証するにはどうすればよいですか? たとえば、私のエンティティには creation_date フィールドがありますが、ビューの外、つまりコントローラ内に設定する必要があるため、このフィールドをビューのフォーム内に配置しません。これを行う方法の例はありますか?

ありがとう

編集:申し訳ありませんが、私は自分自身を明確にしませんでした。エンティティに @NotNull アノテーションが付けられたフィールドがあり、コントローラーに値を入力するだけです (task.setCreationDate(new Date()))。ビュー スコープでフィールドを検証する必要はありません。例:

public static Result newTask() {
    Form<Task> form = taskForm.bindFromRequest();
    if (form.hasErrors()) {
        return badRequest("Error");
    } else {
        Task task = form.get();
        task.setCreationDate(new Date());
        taskDAO.save(task);
        return redirect(routes.Application.tasks());
    }
}

上記のコードでは、フォームは検証されません (hasErrors() を返します)。

4

2 に答える 2

0

フォーム入力がない場合は、このフィールドに必須の注釈を付けるべきではないと思います。代わりに、bindFromRequest の後、エンティティを保存する前に、このフィールドを設定します。

しかし、本当にやりたい場合は、次のようなことがうまくいくかもしれません。

Form<MyEntity> myEntityForm = Form.form(MyEntity.class).bindFromRequest();
myEntityForm.data().put("creation_date", ...);
于 2013-08-06T06:56:26.760 に答える