java - 使用 spring 验证来验证对象的特殊字符

标签 java spring spring-boot

我正在开发 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/

相关文章:

java - 从 HTML 页面上的本地 Java/java applet 类调用函数

java - Android 屏幕截图的偏红图像

java - 在应用程序中设置应用程序特定属性

java - 如何获取映射 URL 的 JSON 结果

java - Spring Boot - 执行器 - 映射 : only own handler

java - 如何重构仅在调用 java 中的对象时调用的方法不同的方法?

java - 如何知道MS Access数据是否被修改?

java - Spring -OAUTH2.0 : No resource available error on calling/oauth/token

spring-mvc - 如何使用外部 tomcat 为 spring boot 应用程序设置 webcontext 名称

docker - Spring Boot Docker com.netflix.discovery.shared.transport.TransportException:无法在任何已知服务器上执行请求