我一直在尝试使用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/

10-10 15:38