良好实践 - 春季验证 - 前端与后端

时间:2015-03-20 13:20:49

标签: java spring validation spring-mvc

我正在使用Bean Validation(JSR-303)开发Spring Web应用程序(Spring MVC 4)。但在某些情况下,我需要在我的前端(百日咳)上进行不同的验证,例如:我需要建立一个注册表单以保存用户的信息,为此,它需要的字段如" emailConfirmation"," passwordConfirmation"。这种字段我不需要保存在我的数据库中,因此它们是@Transient,但也有@NotNull,因为我需要验证表单。

当我需要对此域执行其他操作并保存时,Bean Validation会阻止我,因为它们是@NotNull或@NotEmpty字段。

我的问题是,在这种情况下我该怎么做?

我已经想到了什么:

  • 为此域进行自定义验证,然后删除@NotNull, 来自这些字段的@NotEmpty注释。
  • 创建其他域 只是在我的前端使用它,并在验证后,将其复制到 实体域。

THX, 亚历山大。

1 个答案:

答案 0 :(得分:2)

第二个选项 - 创建一个不同的域只是为了在我的前端使用它,在验证之后,将其复制到实体域对我有好处。

最好将DTO(数据传输对象)和实体分开。将验证添加到DTO以检查发送的数据是否正确。绝不相信客户验证。它可能是客户端上的黑客或错误的脚本或任何其他原因,您需要确保您尝试在服务器上工作的数据是正确的。