我正在开发 springboot REST API,并且请求中有一个包含大约 50 个字段的对象。如果任何字段具有无效的特殊字符,我的要求是抛出无效的请求。我可以通过在对象内部的字段上添加 @Pattern 注释来验证正则表达式来使其工作。
我的问题是这些字段可能会增长,从长远来看,维护将是一个问题。有没有办法可以在对象本身上添加 validator ,以便验证该对象内的所有字段,而不是手动将其添加到该对象内的所有字段上。例如,
@Pattern(regexp="^[a-zA-Z0-9\s]*$")
Object abcField = null
是否有更好的方法使其成为更通用的解决方案
最佳答案
在创建对象之前,有很多方法可以验证参数。我将介绍其中三个:
1-第一个也是最简单的方法是实现一个负责验证参数的ObjectValidator
类。显然,您应该以这种方式手动调用 validator 。
2- 我在项目中很少使用的另一种方法是在构造函数
中验证对象。如果参数的值无效,则可以抛出异常。
3- 在这种情况下,实现自定义注释是我最喜欢的解决方案。您可以实现自己的注释并将其放在数据类之上。 您需要使用以下依赖项:
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.4.1.Final</version>
</dependency>
您的 validator 类也应该实现 ConstraintValidator
接口(interface)。
有关实现您自己的自定义注释
的更多信息,您可以阅读this链接。
如果您有更多问题,请随时提问:)
关于java - 使用 spring 验证来验证对象的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53545530/