Play Framework 2:分别验证各个模型字段的最佳方法

霸主

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

形成:

<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;
}

如何针对模型约束一次仅验证一个字段,并将产生的任何错误消息返回为json?这是一个非常简单的示例,真实的事物将具有许多字段(有些非常复杂)以及每个字段的形式。

阿维克

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

模型

@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()
  }
}

验证组适用于您的情况,在这种情况下,您具有支持不同表单的相同模型对象,并且您希望对表单实施不同的验证规则。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Play Framework 2视图声明

来自分类Dev

Play Framework JPA EntityManager最佳做法

来自分类Dev

Play Framework-play.data.validations与自定义验证?

来自分类Dev

Play Framework Scala JSON验证异常

来自分类Dev

Play Framework Form“折叠”方法命名依据

来自分类Dev

Facebook auth plugin for play framework 2

来自分类Dev

使用Play Framework 2进行对象化

来自分类Dev

Play Framework 2 Java-忘不了

来自分类Dev

Play Framework 2无法从表单获取数据

来自分类Dev

Play Framework specs2失败

来自分类Dev

在Play 2 Framework上配置QueryDSL

来自分类Dev

Play Framework 2 Java-忘不了

来自分类Dev

Play Framework 2.x泛型

来自分类Dev

Play Framework 2 Ebean为字段指定默认值

来自分类Dev

Play Framework 2 Ebean为字段指定默认值

来自分类Dev

从表格中获取一个参数的最佳方法是什么(Play2 Framework)?

来自分类Dev

如何在Scala Play Framework FORMS中验证负BigDecimals?

来自分类Dev

如何在Play Framework中验证可选查询参数?

来自分类Dev

Play Framework 2.3中的模板表单文本框验证

来自分类Dev

如何在Scala Play Framework FORMS中验证负BigDecimals?

来自分类Dev

Play Framework as a WebSocket Client

来自分类Dev

Any CMS for Play Framework?

来自分类Dev

Play Framework onStarup问题

来自分类Dev

Play Framework 2.3 MongoDB

来自分类Dev

Play Framework-将字段添加到JSON对象

来自分类Dev

如何在Java和Play Framework中使用HTTP方法

来自分类Dev

PUT方法在Play Framework Controller中的外观如何?

来自分类Dev

如何使用Play Framework 2.5代理HTTP方法?

来自分类Dev

Play Framework 2和AngularJS-部分处理