Refine search
@ExceptionHandler(MethodArgumentNotValidException.class) public ResponseEntity<Map<String, Object>> handleMethodArgumentNotValidException( HttpServletRequest request, MethodArgumentNotValidException ex ) { final Optional<ObjectError> firstError = ex.getBindingResult().getAllErrors().stream().findFirst(); if (firstError.isPresent()) { final String firstErrorMessage = firstError.get().getDefaultMessage(); return handleError(request, BAD_REQUEST, new BadRequestException(firstErrorMessage)); } return handleError(request, BAD_REQUEST, ex); }
@ExceptionHandler(MethodArgumentNotValidException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) ResponseMessage handleException(MethodArgumentNotValidException e) { SimpleValidateResults results = new SimpleValidateResults(); e.getBindingResult().getAllErrors() .stream() .filter(FieldError.class::isInstance) .map(FieldError.class::cast) .forEach(fieldError -> results.addResult(fieldError.getField(), fieldError.getDefaultMessage())); return ResponseMessage.error(400, results.getResults().isEmpty() ? e.getMessage() : results.getResults().get(0).getMessage()).result(results.getResults()); }
/** * Throws MethodArgumentNotValidException if validation fails. * @throws HttpMessageNotReadableException if {@link RequestBody#required()} * is {@code true} and there is no body content or if there is no suitable * converter to read the content with. */ @Override public Object resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer, NativeWebRequest webRequest, @Nullable WebDataBinderFactory binderFactory) throws Exception { parameter = parameter.nestedIfOptional(); Object arg = readWithMessageConverters(webRequest, parameter, parameter.getNestedGenericParameterType()); String name = Conventions.getVariableNameForParameter(parameter); if (binderFactory != null) { WebDataBinder binder = binderFactory.createBinder(webRequest, arg, name); if (arg != null) { validateIfApplicable(binder, parameter); if (binder.getBindingResult().hasErrors() && isBindExceptionRequired(binder, parameter)) { throw new MethodArgumentNotValidException(parameter, binder.getBindingResult()); } } if (mavContainer != null) { mavContainer.addAttribute(BindingResult.MODEL_KEY_PREFIX + name, binder.getBindingResult()); } } return adaptArgumentIfNecessary(arg, parameter); }
@ExceptionHandler(MethodArgumentNotValidException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) @ResponseBody public ValidationFailureResponse validationError(MethodArgumentNotValidException ex) { BindingResult result = ex.getBindingResult(); final List<FieldError> fieldErrors = result.getFieldErrors(); return new ValidationFailureResponse((FieldError[])(fieldErrors.toArray(new FieldError[fieldErrors.size()]))); }
@ExceptionHandler(MethodArgumentNotValidException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) @ResponseBody public MessageDTO processValidationError(MethodArgumentNotValidException ex) { BindingResult result = ex.getBindingResult(); FieldError error = result.getFieldError(); return processFieldError(error); }
private BindingResult extractBindingResult(Throwable error) { if (error instanceof BindingResult) { return (BindingResult) error; } if (error instanceof MethodArgumentNotValidException) { return ((MethodArgumentNotValidException) error).getBindingResult(); } return null; }
@ExceptionHandler @ResponseStatus(HttpStatus.BAD_REQUEST) public ErrorResponse handleException(MethodArgumentNotValidException exception) { String errorMsg = exception.getBindingResult().getFieldErrors().stream() .map(DefaultMessageSourceResolvable::getDefaultMessage) .findFirst() .orElse(exception.getMessage()); return ErrorResponse.builder().message(errorMsg).build(); }
@ExceptionHandler(MethodArgumentNotValidException.class) @ResponseBody public ResponseResult methodArgumentNotValidExceptionHandler(MethodArgumentNotValidException e){ BindingResult result = e.getBindingResult(); String s = "参数验证失败"; if(result.hasErrors()){ List<ObjectError> errors = result.getAllErrors(); s = errors.get(0).getDefaultMessage(); } return ResponseResult.builder().status(ResponseCode.FAIL.code).msg(s).build(); }
@Override protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex, HttpHeaders headers, HttpStatus status, WebRequest request) { MultibankingError error = MultibankingError.builder().status(HttpStatus.BAD_REQUEST).exception(ex).build(); if(ex.getBindingResult().hasFieldErrors()) error.addValidationErrors(ex.getBindingResult().getFieldErrors()); if (ex.getBindingResult().hasGlobalErrors()) error.addGlobalErrors(ex.getBindingResult().getGlobalErrors()); return handleExceptionInternal(ex, error, headers, error.getStatus(), request); }
@Test public void resolveRequestPartNotValid() throws Exception { try { testResolveArgument(new SimpleBean(null), paramValidRequestPart); fail("Expected exception"); } catch (MethodArgumentNotValidException ex) { assertEquals("requestPart", ex.getBindingResult().getObjectName()); assertEquals(1, ex.getBindingResult().getErrorCount()); assertNotNull(ex.getBindingResult().getFieldError("name")); } }
@Override protected ResponseEntity<Object> handleMethodArgumentNotValid(final MethodArgumentNotValidException ex, final HttpHeaders headers, final HttpStatus status, final WebRequest request) { logger.info(ex.getClass().getName()); // final List<String> errors = new ArrayList<String>(); for (final FieldError error : ex.getBindingResult().getFieldErrors()) { errors.add(error.getField() + ": " + error.getDefaultMessage()); } for (final ObjectError error : ex.getBindingResult().getGlobalErrors()) { errors.add(error.getObjectName() + ": " + error.getDefaultMessage()); } final ApiError apiError = new ApiError(HttpStatus.BAD_REQUEST, ex.getLocalizedMessage(), errors); return handleExceptionInternal(ex, apiError, headers, apiError.getStatus(), request); }
@ExceptionHandler(MethodArgumentNotValidException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) @ResponseBody public Result processValidationError(MethodArgumentNotValidException ex) { log.error(ex.getMessage(), ex); BindingResult result = ex.getBindingResult(); FieldError error = result.getFieldError(); return getFieldErrorResult(error); }
@ExceptionHandler(MethodArgumentNotValidException.class) //@ResponseStatus(HttpStatus.BAD_REQUEST) private RestResult illegalParamsExceptionHandler(MethodArgumentNotValidException ex) { BindingResult bindingResult = ex.getBindingResult(); Map<String, String> errors = Maps.newHashMapWithExpectedSize(bindingResult .getFieldErrorCount()); for (FieldError fieldError : bindingResult.getFieldErrors()) { errors.put(fieldError.getField(), fieldError.getDefaultMessage()); } logger.warn("---------> invalid request! fields ex:{}", JSON.toJSONString(errors)); return RestResultBuilder.builder().errorCode(GlobalErrorCode.BAD_REQUEST).data (errors).build(); }
protected CustomException convertValidionErrorToAppException( MethodArgumentNotValidException oMethodArgNotvalidExp ) { CustomException Exp = null; BindingResult oBindingResult = oMethodArgNotvalidExp.getBindingResult(); // Get the first error associated with a field, if any.\ if ( oBindingResult.hasFieldErrors() ) { Exp = processFieldError( oBindingResult, oMethodArgNotvalidExp ); } else { Exp = processErrors( oBindingResult, oMethodArgNotvalidExp ); } return Exp; }
@ExceptionHandler(MethodArgumentNotValidException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) public R handleError(MethodArgumentNotValidException e) { log.warn("参数验证失败", e.getMessage()); return handleError(e.getBindingResult()); }
@Test public void methodArgumentNotValidException() throws NoSuchMethodException { BindingResult bindingResult = new MapBindingResult(new HashMap<>(), "objectName"); bindingResult.addError(new FieldError("objectName", "field1", "message")); bindingResult.addError(new FieldError("objectName", "field2", "message")); Method method = this.getClass().getMethod("setUp", (Class<?>[]) null); MethodParameter parameter = new MethodParameter(method, -1); MethodArgumentNotValidException exception = new MethodArgumentNotValidException(parameter, bindingResult); ErrorMessage errorMessage = exceptionHandler.handleException(exception); assertThat(errorMessage.getError()).isNull(); assertThat(errorMessage.getMessage()).contains("field1"); assertThat(errorMessage.getMessage()).contains("field2"); }
/** * hibernate validator异常 * @param e * @return */ @ExceptionHandler(MethodArgumentNotValidException.class) public ResultMap handlerMethodArgumentNotValidException(MethodArgumentNotValidException e) { logger.error(e.getMessage(), e); return ResultMap.error(500, "hibernate validator异常"); }
@Test public void handleMethodArgumentNotValid() throws Exception { BeanPropertyBindingResult errors = new BeanPropertyBindingResult(new TestBean(), "testBean"); errors.rejectValue("name", "invalid"); MethodParameter parameter = new MethodParameter(this.getClass().getMethod("handle", String.class), 0); MethodArgumentNotValidException ex = new MethodArgumentNotValidException(parameter, errors); ModelAndView mav = exceptionResolver.resolveException(request, response, null, ex); assertNotNull("No ModelAndView returned", mav); assertTrue("No Empty ModelAndView returned", mav.isEmpty()); assertEquals("Invalid status code", 400, response.getStatus()); }
@ExceptionHandler(MethodArgumentNotValidException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) @ResponseBody public ValidationErrorDTO processValidationError(MethodArgumentNotValidException ex) { BindingResult result = ex.getBindingResult(); List<FieldError> fieldErrors = result.getFieldErrors(); return processFieldErrors(fieldErrors); }
@ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler(MethodArgumentNotValidException.class) public MessageDTO handleValidationException(MethodArgumentNotValidException ex) { Locale locale = LocaleContextHolder.getLocale(); String code = ex.getBindingResult().getFieldError().getDefaultMessage(); return new MessageDTO(messageSource.getMessage(code, null, locale)); }