java - 良好实践 - Spring 验证 - 前端与后端

标签 java spring validation spring-mvc

我正在使用 Bean 验证 (JSR-303) 开发 Spring Web 应用程序 (Spring MVC 4)。但有时我需要在前端(thymeleaf)上进行不同的验证,例如我需要构建一个注册表单来保存用户信息,为此,需要“emailConfirmation”、“passwordConfirmation”等字段。这种字段我不需要保存在我的数据库中,所以它们是@Transient,但也有@NotNull,因为我需要验证表单。

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

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

我已经想到的:

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

谢谢, 亚历山大。

最佳答案

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

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

关于java - 良好实践 - Spring 验证 - 前端与后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29167506/

相关文章:

python 3 : Best practice way to validate/parse **kwargs?

使用 IDataErrorInfo 提交 WPF 验证

java - 为什么 OpenJDK 11 Java 垃圾收集器*减少*此示例程序中的可用内存?

java - 如何使用不同数量的命令行参数构建对象?

spring - Angular 2 和 Spring Kerberos

c# - 是否有验证用户输入的最佳实践方法?

Java wait() 不会被 notify() 唤醒

Java:如何异步发出http请求?

java - 驱动程序 :org. postgresql.Driver@3ed03652 为 URL 返回 null ... 在将 spring boot 部署到 Heroku 时

spring - Grails 插件引用丢弃的同名自定义服务