Java 如何在Play 2.1中设置视图外部的必填字段

Java 如何在Play 2.1中设置视图外部的必填字段,java,forms,playframework,playframework-2.0,Java,Forms,Playframework,Playframework 2.0,如何验证控制器中表单上的必填字段? 例如,我的实体有creation_date字段,但我没有将此字段放在视图的表单中,因为我需要将其设置在视图之外,即控制器中。 有没有人举过这样做的例子 谢谢 编辑:对不起,我没有说清楚。我的实体中有一个用@NotNull注释的字段,我只需要在controller(task.setCreationDate(new Date())中填充值。该字段不需要在视图范围内进行验证。例如: public static Result newTask() { Form&

如何验证控制器中表单上的必填字段? 例如,我的实体有creation_date字段,但我没有将此字段放在视图的表单中,因为我需要将其设置在视图之外,即控制器中。 有没有人举过这样做的例子

谢谢

编辑:对不起,我没有说清楚。我的实体中有一个用@NotNull注释的字段,我只需要在controller(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());
    }
}
公共静态结果newTask(){
Form Form=taskForm.bindFromRequest();
if(form.hasErrors()){
返回请求(“错误”);
}否则{
Task=form.get();
task.setCreationDate(新日期());
taskDAO.save(任务);
返回重定向(routes.Application.tasks());
}
}

在上面的代码中,表单未经验证(返回hasrerrors())。

如果没有表单输入,则不应按要求对该字段进行注释。 相反,您将在bindFromRequest之后和保存实体之前设置此字段

但如果你真的想这么做,也许像这样的方法可以奏效:

Form<MyEntity> myEntityForm = Form.form(MyEntity.class).bindFromRequest();
myEntityForm.data().put("creation_date", ...);
Form myEntityForm=Form.Form(MyEntity.class).bindFromRequest();
myEntityForm.data().put(“创建日期,…);

将字段注释为@NotNull非常方便,因为它可以将约束传播到DB级别

我宁愿坚持以下两种方法之一:

  • 公共字符串validate()方法添加到任务中。如果没有错误,则返回null,如果有错误,则返回错误字符串

  • 实现您的自定义验证器。例如:


  • 谢谢你的回答,但我想我的问题不是很清楚。该字段在我的实体中为@NotNull,但它不是表单上的必填字段,我将在控制器中填充该字段,但当我检索表单时,该字段未被验证(返回hasrerrors())。我编辑了我的问题并举了一个例子。如果您总是在控制器中自己设置值,那么只需从字段中删除
    @NotNull
    注释即可。