gpt4 book ai didi

java - Spring Boot 请求参数的 Bean 验证

转载 作者:行者123 更新时间:2023-12-02 03:59:09 28 4
gpt4 key购买 nike

我有一个用例,其中我们在 REST Controller 中传递多个参数,并且必须验证这些参数是否为空,以及一些自定义验证。此外,对于某些参数,过滤器选项支持startswith、endswith。我能够验证第一个过滤器级别的参数,但无法使其适用于下一个过滤器级别。例如:查询字符串是filter.firstname,它支持可选的startswith和endswith。有人可以提供一些建议来帮助我,当有人传递非空值的filter.firstname或filter.firstname.startswith时如何验证参数?

这是 Controller 的示例代码。

 @GetMapping()
public CustomerResponseData findCustomers(@Valid FilterCustomer filter, HttpServletRequest request)


public class FilterCustomer {

@Valid
private FilterCustomerCriteria filter;

}


public class FilterCustomerCriteria {

@NotBlank
private String firstname;

@NotBlank
private String lastname;
}


public class FilterCustomerFinerCriteria {

@NotBlank
private String startswith;

@NotBlank
private String endswith;
}```

最佳答案

如果我理解正确的话,你说验证框架没有为某些字段上的自定义验证逻辑提供注释(@NotBlank 是不够的)。

在这种情况下,您始终可以创建自己的自定义 validator 来实现验证逻辑。

Here是如何执行此操作的示例的链接,但回顾一下:

  • 您必须实现一个实现 javax.validation.ConstraintValidator 的类,并在其 public boolean isValid 方法中添加验证逻辑

  • 然后创建一个自定义注释(例如 @NotBlank,但您自己的注释),并在其他内容中设置元注释@Constraint(validatedBy = { YourValidator.class })`

然后像任何其他验证注释一样使用此注释

关于java - Spring Boot 请求参数的 Bean 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56742665/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com