gpt4 book ai didi

java - ConstraintValidation 不适用于 Rest Api 请求

转载 作者:行者123 更新时间:2023-12-01 17:34:56 25 4
gpt4 key购买 nike

我创建了一个 API 并添加了一个自定义注释来验证请求正文对象,但这从未被调用。下面是对象。请检查一下代码并帮我看看代码哪里需要更正?

@NotNull,@Size 也不起作用

请求正文对象

@Getter
@AllArgsConstructor
@Sample
public class SaleRequest {
@NotNull
private Integer sale;
@NotNull
private Date dateTime;
@NotNull
@Size(min = 10, max = 10)
private String customerId;
}

注释

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {SalesRequestValidator.class})
@Documented
public @interface Sample {
Class<?>[] groups() default { };

Class<? extends Payload>[] payload() default { };


String message() default "Invalid Sale Request";
}

validator

public class SalesRequestValidator implements ConstraintValidator<Sample, SaleRequest> {
private String message;

@Override
public void initialize(Sample constraintAnnotation) {
this.message = constraintAnnotation.message();
}

@Override
public boolean isValid(SaleRequest sale, ConstraintValidatorContext context) {
System.out.println("Tested!");
return sale.getSale() > 0;
}

}

API实现

public interface SalesApi {
@RequestMapping(
value = {"/sales"},
produces = {"application/json"},
consumes = {"application/json"},
method = {RequestMethod.POST}
)
ResponseEntity<Integer> submitSale(@RequestBody @Valid SaleRequest saleRequest);
}

不知道哪里出了问题

最佳答案

实现看起来不错。

确保您已在希望接收 SaleRequest 请求正文的 Controller 方法中设置了 @Valid 注释。

它应该看起来像这样:addNewSaleRequest(@RequestBody @Valid SaleRequest saleRequest)

关于java - ConstraintValidation 不适用于 Rest Api 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61058272/

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