【问题标题】:constraint validation on @RequestParam does not seems to be working@RequestParam 上的约束验证似乎不起作用
【发布时间】:2020-04-19 18:30:57
【问题描述】:

我有一个GetAll 操作,它将所有员工拉入deptNo。我想在我的RequestParameter 上添加一个检查deptNumber 大小的约束,但它似乎没有验证参数。 如何实现验证?

    public ResponseEntity<PagedResources<EmpSummary>> getEmps(
@Valid @RequestParam @Max(1) @Max(999) Optional<Long> deptNUmber)

@Controller
@Validated
@RequestMapping("/v1")
@RequiredArgsConstructor
public class OntApiController implements OntApi {
    private final OntService service;
    private NativeWebRequest    nativeWebRequest;
    private HttpServletRequest  httpServletRequest;

    @Override
    public ResponseEntity<PagedResources<OntSummaryResource>> getOnts(
            @Valid @RequestParam @Min(1L) @Max(999L) Optional<Long> ontNumber,
            @Valid @RequestParam @Min(1) @Max(999) Optional<Integer> model,
            ...... more parameters);

javax.validation.UnexpectedTypeException: HV000030: 找不到约束的验证器 'javax.validation.constraints.Max' 验证类型 'java.util.Optional'。检查配置

    <dependency>
        <groupId>org.hibernate.validator</groupId>
        <artifactId>hibernate-validator</artifactId>
    </dependency>

【问题讨论】:

    标签: spring rest validation


    【解决方案1】:

    根据documentation :如果您使用方法参数验证,您应该将注释@Validated 添加到您的控制器。

    现在你的代码应该是这样的:

    @RestController
    @RequestMapping("/your_api")
    @Validated
    public class YourController {
    
       @GetMapping("/your_endpoint")
       public ResponseEntity> getEmps(
         @RequestParam @Min(1) @Max(999) Optional deptNUmber){
    

    【讨论】:

    • 我尝试过@Validated,但它似乎不起作用。让我在我的主要问题中提供更多细节
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 2017-03-12
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    相关资源
    最近更新 更多