gpt4 book ai didi

java - Spring 启动验证注释 @Valid 和 @NotBlank 不起作用

转载 作者:行者123 更新时间:2023-12-01 08:57:58 35 4
gpt4 key购买 nike

下面给出的是我的主 Controller ,我从中调用 获取PDF详细信息方法。

@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);
}
以下是 更新打印契约(Contract) 我用验证注释和相应的 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;
}

}
我试图通过右键单击项目(运行方式)并为变量传递空白值来将应用程序作为 Spring Boot 应用程序运行 isReprint 包括签名坐标通过肥皂用户界面。但是,验证似乎不起作用,并且不会在 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 {

Refer here全面了解 spring boot 中的验证模型。

如果你想检查一个字符串是否只包含特定的字符,你必须添加 anchor (^ 表示字符串的开头,$ 表示字符串的结尾)以确保您的模式匹配所有字符串。大括号只是为了写一个数量,
@Pattern(regexp = "^[\\p{Alnum}]{1,32}$")

最后,我假设您的类路径中有以下 jars,

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

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

关于java - Spring 启动验证注释 @Valid 和 @NotBlank 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48614773/

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