Java проверка расширенного pojo

Я создаю проект при весенней загрузке и хочу добавить проверку, которую легко интегрировать. У меня есть Pojo для моего проекта, как показано ниже:

public class Employee{ 
    @JsonProperty("employeeInfo")
    private EmployeeInfo employeeInfo;
}

Класс EmployeeInfo выглядит следующим образом:

public class EmployeeInfo extends Info {
    @JsonProperty("empName")
    private String employeeName;
}

Информационный класс выглядит следующим образом:

@JsonIgnoreProperties(ignoreUnknown = true)
public class Info {
    @JsonProperty("requestId")
    protected String requestId;
}

Как проверить, не является ли идентификатор запроса пустым, с помощью javax.validation

Мой класс контроллера выглядит следующим образом:

@RequestMapping(value = "/employee/getinfo", method = RequestMethod.GET, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<> getEmployee(@RequestBody Employee employee) {
    //need to validate input request here
    //for e.g to check if requestId is not blank
}

Запрос :

{
  "employeeInfo": {
    "requestId": "",
  }
}
0
0
686
2

Ответы 2

Учитывая, что вы используете проверка-api:

Пожалуйста, попробуйте использовать ниже, чтобы проверить, не является ли ваша строка нулевой или не содержит пробелов

@NotBlank

Чтобы проверить параметры запроса в методах контроллера, вы можете использовать либо встроенные валидаторы, либо пользовательские (где вы можете добавить любой тип валидации с пользовательскими сообщениями).

Подробная информация о том, как использовать пользовательские проверки в контроллере Spring, Узнайте, как проверить параметры запроса с валидатором, как показано ниже:

@Component
public class YourValidator implements Validator {

@Override
    public boolean supports(Class<?> clazz) {
        return clazz.isAssignableFrom(Employee.class);
}

@Override
    public void validate(Object target, Errors errors) {
        if (target instanceof Employee) {
           Employee req = (Employee) target;
           ValidationUtils.rejectIfEmptyOrWhitespace(errors, "employeeInfo.requestId", "YourCustomErrorCode", "yourCustomErrorMessage");

           //Or above validation can also be done as
           if(req.getEmployeeInfo().getRequestId == null){
               errors.rejectValue("employeeInfo.requestId", "YourCustomErrorCode", "YourCustomErrorMessage");
           }
        }
    }
}

Другие вопросы по теме