我想在服务层处理数据之前验证数据。
@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.@Vaidated - 必须安装在 RestController 上。
@RestController
@RequestMapping(API_V3)
@Validated
public class DataRestController {
}
2.@Valid - 必须安装在某个类型的 Collection 附近
createNewModelBasedUploadFile(@RequestBody List<@Valid DataDto> modelList)
{
}
3.@Validated - 不需要通过 Java dto-object。
4.Java dto-object - 必须在 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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句