Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Play Framework 2:单独验证单个模型字段的最佳方法_Java_Forms_Playframework_Playframework 2.2 - Fatal编程技术网

Java Play Framework 2:单独验证单个模型字段的最佳方法

Java Play Framework 2:单独验证单个模型字段的最佳方法,java,forms,playframework,playframework-2.2,Java,Forms,Playframework,Playframework 2.2,对于本例,假设用户只想更新其在线个人资料的名字 表格: 如何根据模型约束一次只验证一个字段,并将任何产生的错误消息作为json返回?这是一个非常简单的例子,真实的东西将有许多字段(有些非常复杂),每个字段都有一个表单。Play的内置验证注释符合JavaBean验证规范(JSR-303)。因此,您可以使用规范中记录的验证组功能: 模型 控制器 公共类用户控制器{ 公共静态结果updateFirstName(){ //仅运行更新用户名时需要保留的验证规则 Form filledForm=Form.F

对于本例,假设用户只想更新其在线个人资料的名字

表格:


如何根据模型约束一次只验证一个字段,并将任何产生的错误消息作为json返回?这是一个非常简单的例子,真实的东西将有许多字段(有些非常复杂),每个字段都有一个表单。

Play的内置验证注释符合JavaBean验证规范(JSR-303)。因此,您可以使用规范中记录的验证组功能:

模型 控制器
公共类用户控制器{
公共静态结果updateFirstName(){
//仅运行更新用户名时需要保留的验证规则
Form filledForm=Form.Form(User.class,User.FirstNameStep.class).bindFromRequest();
if(form.hasErrors()){
//返回错误的请求,错误为json
}
//否则保存并返回ok()
}
}
验证组适用于您的情况,即您有相同的模型对象支持不同的表单,并且您希望对表单强制执行不同的验证规则

<form data-ng-submit="updateFirstName()">
  <label for="firstName">First name<label>
  <input type="text" name="title" data-ng-model="firstName">
  <button type="submit">Update first name</button>
</form>
public class UsersController {
  public static Result updateFirstName() {
    Form<User> filledForm = Form.form(User.class).bindFromRequest();

    // TODO: Validate firstName

    // if hasErrors() return bad request with errors as json

    // else save and return ok()
  }
}
@Entity
public class User extends Model {
  @Id
  public Long id;
  @Constraints.Required
  public String firstName;
  @Constraints.Required
  public String lastName;
}
@Entity
public class User extends Model {

  // Use this interface to mark out the subset of validation rules to run when updating a user's first name
  public interface FirstNameStep {}

  @Id
  public Long id;

  @Required(groups = FirstNameStep.class)
  public String firstName;

  // This isn't required when updating a user's first name
  @Required
  public String lastName;
}
public class UsersController {

  public static Result updateFirstName() {

    // Only run the validation rules that need to hold when updating a user's first name
    Form<User> filledForm = Form.form(User.class, User.FirstNameStep.class).bindFromRequest();

    if (form.hasErrors()) {
      // return bad request with errors as json
    }

    // else save and return ok()
  }
}