即使在服务层处理数据之前,我也希望对数据进行验证。
- dto
@Validated
public class DataDto {
@NotBlank
@NotNull
String keyId;
我希望当Jackson开始将json转换为dto,然后注意对象的dto字段上方的注释时,它会发送一个带有错误的响应
@RestController
@RequestMapping(API_V3)
@Validated
public class DataRestController {
@PostMapping(path = "data")
public ResponseEntity<DataDto>
createNewModelBasedUploadFile(@RequestBody @Valid List<DataDto> modelList) {
}
请注意,我在这里验证一组值。
我还设置了
@Configuration
public class ValidConfig {
@Bean
MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
}
未进行验证。
也许你还需要编写自己的验证器?但是我如何在这里连接和配置它?
我在这里和网上看过很多这样的问题。但我没有找到解决方案。基本上,所有验证都发生在实体试图保存到数据库时。。。。
有人对如何解决这个问题有什么想法吗?
更新
让我们总结一下:
1.@无效-必须安装在RestController上。
@RestController
@RequestMapping(API_V3)
@Validated
public class DataRestController {
}
2.@有效-必须安装在收集类型附近
createNewModelBasedUploadFile(@RequestBody List<@Valid DataDto> modelList)
{
}
3.@已验证-不需要通过Java dto对象。
4.Java dto对象-必须在self字段之上有任何用于验证的注释。
public class DataDto {
@NotBlank
@NotNull
String keyId;
}
5.-pom.xml
我没有指出依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
但是,进入pom.xml有:
<dependency>
<artifactId>validation-api</artifactId>
<groupId>javax.validation</groupId>
<version>2.0.1.Final</version>
</dependency>
6.配置文件-也不需要。
@Configuration
public class ValidConfig {
@Bean
MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
}
请尝试
createNewModelBasedUploadFile(@RequestBody List<@Valid DataDto> modelList)