【发布时间】:2017-06-26 08:35:39
【问题描述】:
我的 TestValidator 中有如下验证方法
@Override
public void validate(Object target, Errors errors) {
Test test = (Test) target;
String testTitle = test.getTestTitle();
//**ErrorCheck1** - This works, and I am able to pull the value in my controller
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "testTitle", "test.testTitle.projec", "My msg");
if (testTitle != null && testTitle.length() < 4) {
logger.error("Inside custom validation"+test.testTitle().length());
//**Error Check2**
//***HOW DO I RETRIEVE THE BELOW VALUE in My controller
errors.rejectValue(testTitle, "test.testTitle.lessThen4");
errors.addAllErrors(errors);
logger.error("Entered If condition of validate");
}
}
我的控制器是
@RequestMapping(value = "/test", method = RequestMethod.PUT)
public ResponseEntity<BasicResponseDTO> newTest(@Valid @RequestBody Test test, BindingResult result) {
if (result.hasErrors()){
logger.error("Entered Errors");
BasicResponseDTO basicResponseDTO = new BasicResponseDTO();
basicResponseDTO.setCode(ResponseCode.BAD_REQUEST);
return new ResponseEntity<BasicResponseDTO>(basicResponseDTO, HttpStatus.BAD_REQUEST);
}
}
当我的 ErrorCheck1 条件被激活时,我在控制器内的 IF 条件能够检索它。 但是,在我的 ErrorCheck2 中,由于 errors.rejectValue 的原因,我立即在控制台上收到错误消息,并且无法优雅地处理 testTitle 长度小于 4 的情况。
errors.rejectValue 的替代方法是什么,以便我可以处理 我的控制器出错了?
【问题讨论】:
-
什么是ErrorCheck1和ErrorCheck12?
-
请查看第 5 行和第 9 行代码的注释部分。我已将它们标记为 ** 以使其清楚。
标签: java spring validation spring-boot spring-data