如何使用SpringBoot的Swagger中的javax.validation.constraints组应用约束?
我有一个SpringBoot项目,它有两个方法接收相同类型的对象作为参数,对于每种情况,在其属性中都有不同的验证,这优雅地使用了javax.validation.constraints组,现在将OpenApi Swagger文档应用到项目中时,一切都很好,除了Swagger界面根据需要显示两种方法中的所有验证外,它无法区分组应用的验证 如何使用SpringBoot的Swagger中的javax.validation.constraints组应用约束 组的接口:如何使用SpringBoot的Swagger中的javax.validation.constraints组应用约束?,java,spring-boot,swagger,Java,Spring Boot,Swagger,我有一个SpringBoot项目,它有两个方法接收相同类型的对象作为参数,对于每种情况,在其属性中都有不同的验证,这优雅地使用了javax.validation.constraints组,现在将OpenApi Swagger文档应用到项目中时,一切都很好,除了Swagger界面根据需要显示两种方法中的所有验证外,它无法区分组应用的验证 如何使用SpringBoot的Swagger中的javax.validation.constraints组应用约束 组的接口: public inter
public interface OnCreate {}
public interface OnDelete {}
对具有组的属性进行验证的对象:
@NotBlank(groups = { OnUpdate.class, OnDelete.class }, message = "codigo obligatorio")
@NotNull(groups = { OnUpdate.class, OnDelete.class }, message = "codigo obligatorio")
@Length(groups = { OnUpdate.class }, min = 6, max = 6, message = "cantidad de caracteres permitida 6")
private String codigo;
@NotNull(groups = { OnUpdate.class, OnCreate.class }, message = "mail obligatorio")
@NotBlank(groups = { OnUpdate.class, OnCreate.class }, message = "mail obligatorio")
@Email(groups = { OnUpdate.class, OnCreate.class }, message = "mail mal formado")
@Length(groups = { OnUpdate.class, OnCreate.class }, min = 1, max = 150, message = "cantidad maxima de caracteres 150")
private String mail;
@NotBlank(groups = { OnUpdate.class, OnCreate.class }, message = "nombre obligatorio")
@NotNull(groups = { OnUpdate.class, OnCreate.class }, message = "nombre obligatorio")
@Length(groups = { OnUpdate.class, OnCreate.class }, min = 1, max = 150, message = "cantidad maxima de caracteres 150")
private String nombre;
@NotNull(groups = { OnUpdate.class, OnCreate.class }, message = "telefono obligatorio")
@Max(groups = { OnUpdate.class, OnCreate.class }, value = 2147483647, message = "cantidad maxima de caracteres 2147483647")
@Min(groups = { OnUpdate.class, OnCreate.class }, value = -2147483648, message = "cantidad maxima de caracteres -2147483647")
private Integer telefono;
和服务:
@Validated
public class PersonaRest extends GeneralRest {
@PostMapping("/actualizar")
@Validated(OnUpdate.class)
public ResponseEntity editar(@Valid @RequestBody PersonaTO p) {
logger.info("La persona update: " + p.toString());
return new ResponseEntity(personaServicio.agregar(p), HttpStatus.OK);
}
@PostMapping("/eliminar")
@Validated(OnDelete.class)
public ResponseEntity eliminar(@Valid @RequestBody PersonaTO p) {
logger.info("La persona eliminar: " + p.toString());
try {
personaServicio.eliminar(p);
return new ResponseEntity(Boolean.TRUE, HttpStatus.OK);
} catch (EmptyResultDataAccessException e) {
return new ResponseEntity(
new CustomErrorMessages("No se encontro una persona con el identificador " + p.getCodigo()),
HttpStatus.OK);
}
}
}
服务更新服务删除
我不是100%确定,但我不认为斯威格会考虑。它只检查Bean验证注释。我不是100%确定,但我不认为swagger正在考虑Springs验证注释。它只检查Bean验证注释。