Hop*_*ing 4 java validation spring spring-data spring-boot
我的TestValidator中有我的validate方法,如下所示
@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");
}
}
Run Code Online (Sandbox Code Playgroud)
我的控制器是
@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);
}
}
Run Code Online (Sandbox Code Playgroud)
当我的ErrorCheck1条件被激活时,控制器内部的IF条件能够对其进行检索。但是,在我的ErrorCheck2中,由于error.rejectValue的原因,我立即在控制台上收到一个错误,并且当testTitle长度小于4时,无法正常处理这种情况。
什么是errors.rejectValue的替代方法,以便我可以处理控制器中的错误?
好的,我知道了。我要做的就是改变
errors.rejectValue(testTitle,“ test.testTitle.lessThen4”);
至
errors.reject(testTitle,“ test.testTitle.lessThen4”);
RejectValue是字段错误,本质上不是全局的。拒绝是全局错误,可以从控制器的错误列表内部进行访问。
从文档中
void reject(String errorCode,String defaultMessage);
使用给定的错误描述为整个目标对象注册一个全局错误。
@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.reject(testTitle, "test.testTitle.lessThen4");
errors.addAllErrors(errors);
logger.error("Entered If condition of validate");
}
}
Run Code Online (Sandbox Code Playgroud)
希望能对某人有所帮助。
| 归档时间: |
|
| 查看次数: |
7710 次 |
| 最近记录: |