Spring Boot验证注释@Valid和@NotBlank不起作用

Poonkodi Sivapragasam:

下面给出的是我从中调用getPDFDetails方法的主控制器。

@RequestMapping(value=PATH_PRINT_CONTRACTS, method=RequestMethod.POST)
    public ResponseEntity<?> printContracts(@RequestBody final UpdatePrintContracts updatePrintContracts) throws Exception {

        System.out.println("contracts value is "+ updatePrintContracts);

        Integer cancellationReasons = service.getPDFDetails(updatePrintContracts);

        System.out.println("success!");

        return ResponseEntity.ok(cancellationReasons);
    }   

下面是UpdatePrintContracts类,其中我定义了带有验证注释和相应的getter / setter方法的所有变量。

public class UpdatePrintContracts {

    @Valid
    @NotBlank
    @Pattern(regexp = "\\p{Alnum}{1,30}")
    String isReprint;

    @Valid
    @NotBlank
    Integer dealerId;

    @Valid
    @NotBlank
    @Pattern(regexp = "\\p{Alnum}{1,30}")
    String includeSignatureCoordinates;

    @Valid
    @NotBlank
    java.util.List<Integer> contractNumbers;

    public String getIsReprint() {
        return isReprint;
    }

    public void setIsReprint(String isReprint) {
        this.isReprint = isReprint;
    }

    public Integer getDealerId() {
        return dealerId;
    }

    public void setDealerId(Integer dealerId) {
        this.dealerId = dealerId;
    }

    public String getIncludeSignatureCoordinates() {
        return includeSignatureCoordinates;
    }

    public void setIncludeSignatureCoordinates(String includeSignatureCoordinates) {
        this.includeSignatureCoordinates = includeSignatureCoordinates;
    }

    public java.util.List<Integer> getContractNumbers() {
        return contractNumbers;
    }

    public void setContractNumbers(java.util.List<Integer> contractNumbers) {
        this.contractNumbers = contractNumbers;
    }

}

我试图通过右键单击项目(运行方式)并通过肥皂UI传递变量isReprint和includeSignatureCoordinates的空白值来将应用程序作为Spring Boot应用程序运行。但是,验证似乎不起作用,并且在Soap UI上没有引发任何验证错误。我想念什么?任何帮助表示赞赏!

苏里亚:

首先,在UpdatePrintContracts中,这些类变量不需要@Valid批注。您可以删除它们。

要触发对@Controller输入的验证,只需将输入参数注释为@Valid或@Validated:

@RequestMapping(value=PATH_PRINT_CONTRACTS, method=RequestMethod.POST)
public ResponseEntity<?> printContracts(@Valid @RequestBody  final UpdatePrintContracts updatePrintContracts) throws Exception {

请参阅此处以全面了解在弹簧靴中验证模型的知识。

如果要检查字符串是否仅包含特定字符,则必须添加锚点(^表示字符串的开头,$表示字符串的结尾),以确保您的模式与所有字符串匹配。数量

@Pattern(regexp = "^[\\p{Alnum}]{1,32}$")

最后,我假设您在类路径中有以下jar,

.validation-api.jar(包含抽象API和注释扫描器)

.hibernate-validator.jar(包含具体实现)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章