我一直在尝试使用spring @NotEmpty
使REST API中的某些输入参数成为必需。
到目前为止,这是我已经实现的目标。
RestController
@RestController
public class ResourceController {
@Autowired
private GestionaDatosCrmService service;
@PostMapping(path = Constantes.OBTENER_DATOS_CRM)
@ResponseStatus(HttpStatus.CREATED)
public ObtenerDatosCrmResponse obtenerDatosCrm(@RequestHeader HttpHeaders headerRequest,
@Valid @RequestBody ObtenerDatosCrmRequest request, HttpServletResponse headerResponse) {
return service.obtenerDatosCrm(headerRequest, request, headerResponse);
}
}
请求对象
import javax.validation.constraints.NotEmpty;
//import org.hibernate.validator.constraints.NotEmpty;
public class ObtenerDatosCrmRequest {
@NotEmpty(message = "Please provide a number")
private String numSN;
private String callID;
public String getNumSN() {
return numSN;
}
public void setNumSN(String numSN) {
this.numSN = numSN;
}
public String getCallID() {
return callID;
}
public void setCallID(String callID) {
this.callID = callID;
}
}
请注意这个重要的细节,我在
javax.validation.constraints.NotEmpty
注释中使用了@NotEmpty
,但是当我更改为已弃用org.hibernate.validator.constraints.NotEmpty
的@NotEmpty
并在测试时出现400错误的请求错误时,该功能将不起作用。我正在使用Spring Boot 2.2.2.RELEASE,是否有一些已知的错误或问题?
最佳答案
我遇到了完全相同的问题,对我有用的解决方案是明确要求使用更新的hibernate-validator
版本。
摇篮:
implementation 'org.hibernate.validator:hibernate-validator:6.1.2.Final'
Maven:
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.2.Final</version>
</dependency>
关于java - Spring Boot Bean验证@NotEmpy不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59585041/