使用noargsconstructor时javax.validation不起作用
我正在尝试验证一个请求对象,其类如下:使用noargsconstructor时javax.validation不起作用,java,validation,lombok,Java,Validation,Lombok,我正在尝试验证一个请求对象,其类如下: @Value @NoArgsConstructor(force = true, access = AccessLevel.PRIVATE) @AllArgsConstructor public class SomeCreateRequest { @NotNull(message = "Name can not be null") @NotBlank(message = "Name can not be empt
@Value
@NoArgsConstructor(force = true, access = AccessLevel.PRIVATE)
@AllArgsConstructor
public class SomeCreateRequest {
@NotNull(message = "Name can not be null")
@NotBlank(message = "Name can not be empty")
String name;
}
如果没有NoArgsConstructor,验证工作正常,但后期操作失败,出现HttpMessageEndableException;使用NoArgsConstructor,后期操作成功,但验证不起作用
我做错了什么
另外,使用Java 8、Spring 2.3.4.RELEASE、javax.validation 2.0.1.Final和我的控制器如下所示:
@RequiredArgsConstructor
@RestController
@RequestMapping("/api")
public class MyController {
private final MyService myService;
@PostMapping()
public MyResponse submit(@Valid @RequestBody SomeCreateRequest request){
return myService.create(request);
}
}
您是否在控制器中使用
@Valid
?注意@noargsconstuctor(force=true,access=AccessLevel.PRIVATE)
,因为Jackson反序列化器需要一个no-args构造函数,你能举一个你正在使用的控制器注释的例子吗?是的,我在我的控制器中使用@Valid。请参阅我对这个问题的编辑。该对象需要一个无参数构造函数来创建,或者需要一个JSON元数据来知道调用哪个构造函数。验证不起作用的事实可能是由于您添加了javax.validation
作为依赖项,而您应该使用spring boot starter验证
。后者包括API和实现,只添加API没有任何作用。