Java 如何在Play 2.1中设置视图外部的必填字段
如何验证控制器中表单上的必填字段? 例如,我的实体有creation_date字段,但我没有将此字段放在视图的表单中,因为我需要将其设置在视图之外,即控制器中。 有没有人举过这样做的例子 谢谢 编辑:对不起,我没有说清楚。我的实体中有一个用@NotNull注释的字段,我只需要在controller(task.setCreationDate(new Date())中填充值。该字段不需要在视图范围内进行验证。例如: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&
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级别
我宁愿坚持以下两种方法之一:
谢谢你的回答,但我想我的问题不是很清楚。该字段在我的实体中为@NotNull,但它不是表单上的必填字段,我将在控制器中填充该字段,但当我检索表单时,该字段未被验证(返回hasrerrors())。我编辑了我的问题并举了一个例子。如果您总是在控制器中自己设置值,那么只需从字段中删除
@NotNull
注释即可。