Example usage for org.springframework.web.bind MethodArgumentNotValidException getBindingResult

List of usage examples for org.springframework.web.bind MethodArgumentNotValidException getBindingResult

Introduction

In this page you can find the example usage for org.springframework.web.bind MethodArgumentNotValidException getBindingResult.

Prototype

public BindingResult getBindingResult() 

Source Link

Document

Return the results of the failed validation.

Usage

From source file:com.logsniffer.web.controller.exception.RestErrorHandler.java

@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)//from  w w  w  . j a  va  2  s . c o  m
@ResponseBody
public ErrorResponse processValidationError(final MethodArgumentNotValidException ex,
        final HttpServletResponse response) throws IOException {
    return processFieldErrors(processExceptionResponse(ex, response, org.apache.http.HttpStatus.SC_BAD_REQUEST),
            ex.getBindingResult().getFieldErrors());
}

From source file:com.orange.cepheus.cep.controller.AdminController.java

@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<StatusCode> validationExceptionHandler(HttpServletRequest req,
        MethodArgumentNotValidException exception) {

    StringBuffer sb = new StringBuffer();
    for (ObjectError error : exception.getBindingResult().getAllErrors()) {
        if (sb.length() != 0) {
            sb.append(", ");
        }/*ww  w. j  a v a  2 s  .com*/
        sb.append(error.getDefaultMessage());
    }
    logger.error("Configuration validation error: {}", sb.toString());

    StatusCode statusCode = new StatusCode();
    statusCode.setCode("400");
    statusCode.setReasonPhrase("Configuration validation error");
    statusCode.setDetail(sb.toString());
    return new ResponseEntity<>(statusCode, HttpStatus.BAD_REQUEST);
}

From source file:se.skltp.cooperation.web.rest.exception.DefaultExceptionHandler.java

@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)/*from  w w w. j a va 2  s .  c om*/
@ResponseBody
public ProblemDetail processValidationError(HttpServletRequest request, MethodArgumentNotValidException e) {
    log.debug("Handling form validation error");

    ValidationError error = new ValidationError();
    buildErrorMessage(request, e, HttpStatus.BAD_REQUEST, error);

    BindingResult result = e.getBindingResult();
    List<FieldError> fieldErrors = result.getFieldErrors();

    for (FieldError fieldError : fieldErrors) {
        log.debug("Adding error message: {} to field: {}", fieldError.getDefaultMessage(),
                fieldError.getField());
        error.addFieldError(fieldError.getField(), fieldError.getCode(), fieldError.getDefaultMessage());
    }

    return error;
}

From source file:br.com.modoagil.asr.rest.support.RESTErrorHandler.java

/**
 * Manipula exceo de validao de objetos nos servios
 *
 * @param ex// www. ja v a  2 s  .c  om
 *            {@link MethodArgumentNotValidException}
 * @return resposta ao cliente
 */
@ResponseBody
@ExceptionHandler(MethodArgumentNotValidException.class)
public Response<E> processMethodArgumentNotValidException(final MethodArgumentNotValidException ex) {
    this.logger.info("handleMethodArgumentNotValidException - Catching: " + ex.getClass().getSimpleName(), ex);
    final BindingResult result = ex.getBindingResult();
    final FieldError fieldError = result.getFieldError();
    final String message = this.messageSource.getMessage(fieldError.getDefaultMessage(), null, null);
    return new ResponseBuilder<E>().success(false).status(HttpStatus.BAD_REQUEST).message(message).build();
}

From source file:net.jkratz.igdb.controller.advice.ErrorController.java

@RequestMapping(produces = "application/json")
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
public @ResponseBody Map<String, Object> handleValidationException(MethodArgumentNotValidException ex)
        throws IOException {
    logger.warn(ex.getMessage());//  ww  w  . j  a v a 2 s . co m
    Map<String, Object> map = Maps.newHashMap();
    map.put("error", "Validation Failure");
    map.put("violations", convertConstraintViolation(ex));
    map.put("target", ex.getBindingResult().getTarget());
    map.put("expectedType", ex.getBindingResult().getObjectName());
    return map;
}

From source file:tv.arte.resteventapi.web.errors.GlobalDefaultExceptionHandler.java

/**
 * Handle all exceptions of type {@link ImageRepositoryException} thrown by (or passing trough) the Controller's layer
 * /*www .  jav a 2 s  .c  o  m*/
 * @param response The HttpServletResponse
 * @param e Thrown RestEventApiValidationException
 * @return
 * @throws Exception
 */
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public ModelAndView restEventApiMethodArgumentNotValidExceptionHandler(HttpServletRequest request,
        MethodArgumentNotValidException e) throws Exception {
    RestEventApiStandardResponse<RestEventApiMessage> restEventApiStandardResponse = new RestEventApiStandardResponse<RestEventApiMessage>();
    Locale userLocale = request.getLocale();
    String descriprionNotAvailableDefaultMessage = RestEventApiError.PRE_DEFINED.RIA_ERR_G_DESC_NOT_AVAILABLE
            .getDefaultMessageText();

    for (ObjectError globalError : e.getBindingResult().getGlobalErrors()) {
        restEventApiStandardResponse.addError(new RestEventApiMessage(globalError.getDefaultMessage(),
                this.messageSource.getMessage(globalError.getCode(), globalError.getArguments(),
                        descriprionNotAvailableDefaultMessage, userLocale)));
    }

    for (FieldError fieldError : e.getBindingResult().getFieldErrors()) {

        String messageCode = null;
        String defaultMessageText = null;

        if (fieldError.isBindingFailure()) {
            messageCode = RestEventApiError.PRE_DEFINED.RIA_ERR_V_BINDING.getCode();
            defaultMessageText = RestEventApiError.PRE_DEFINED.RIA_ERR_V_BINDING.getDefaultMessageText();
        } else {
            //TODO: Find an appropriate way to search pre-defined RestEventAPiError
            messageCode = fieldError.getDefaultMessage();
            defaultMessageText = descriprionNotAvailableDefaultMessage;
        }

        restEventApiStandardResponse
                .addError(new FieldValidationError(messageCode, this.messageSource.getMessage(messageCode,
                        fieldError.getArguments(), defaultMessageText, userLocale), fieldError.getField()));

    }

    ModelAndView mav = new ModelAndView();
    mav.addObject(restEventApiStandardResponse);
    mav.setView(restEventApiDefaultErrorView);

    return mav;
}

From source file:com.mycompany.springboot.handler.MethodArgumentNotValidExceptionHandler.java

@ResponseBody
@ResponseStatus(HttpStatus.BAD_REQUEST)//www .  j  a  v a  2 s  . c o  m
@ExceptionHandler(MethodArgumentNotValidException.class)
public Map<String, Object> handler(MethodArgumentNotValidException ex) {
    //        Map<String, Object> map = new HashMap<>();
    //        List<Object> list = new ArrayList<>();
    //
    //        for (FieldError error : ex.getBindingResult().getFieldErrors()) {
    //            Map<String, Object> mapError = new HashMap<>();
    //            mapError.put("field", error.getField());
    //            mapError.put("message", error.getDefaultMessage());
    //            list.add(mapError);
    //        }
    //        map.put("errors", list);
    //        return map;

    //        Map<String,Object> map = new HashMap<>();
    //        map.put("error_id","1");
    //        map.put("error", ex.getBindingResult().getFieldError().getDefaultMessage());
    //        return map;

    Map<String, Object> map = new HashMap<>();
    List<Object> list = new ArrayList<>();

    ex.getBindingResult().getFieldErrors().stream().map((error) -> {
        Map<String, Object> mapError = new HashMap<>();
        mapError.put("field", error.getField());
        mapError.put("message", error.getDefaultMessage());
        return mapError;
    }).forEach((mapError) -> {
        list.add(mapError);
    });

    map.put("errors", list);
    return map;
}

From source file:org.craftercms.commons.validation.rest.ValidationAwareRestExceptionHandlers.java

@Override
protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex,
        HttpHeaders headers, HttpStatus status, WebRequest request) {
    ValidationResult result = new ValidationResult();

    for (FieldError fieldError : ex.getBindingResult().getFieldErrors()) {
        result.addError(fieldError.getField(),
                ValidationUtils.getErrorMessage(errorMessageBundle, FIELD_MISSING_ERROR_CODE));
    }// ww w. java 2s. c  o  m

    return handleExceptionInternal(ex, result, new HttpHeaders(), HttpStatus.BAD_REQUEST, request);
}

From source file:org.jasig.ssp.transferobject.ServiceResponse.java

/**
 * Extract the Validation messages out of the
 * MethodArgumentNotValidException, and use as the ServiceResponse Message.
 * //  w ww.j  a v a2s . c  om
 * @param success
 *            If the response should indicate success or not
 * @param e
 *            Error messages to show
 */
public ServiceResponse(final boolean success, final MethodArgumentNotValidException e) {
    this.success = success;

    // collect the error messages
    final List<String> errorMessages = Lists.newArrayList();
    for (final ObjectError error : e.getBindingResult().getAllErrors()) {
        final StringBuilder sb = new StringBuilder(); // NOPMD

        // get the field name if it is a field error.
        if (error instanceof FieldError) {
            final FieldError fe = (FieldError) error;
            sb.append("[").append(fe.getField());
        } else {
            sb.append("[");
        }

        // get the default message
        sb.append(" ").append(error.getDefaultMessage()).append("] ");
        // add it to the list of error messages
        errorMessages.add(sb.toString());
    }

    // sort the messages for readablility
    Collections.sort(errorMessages);

    // introduce the error messages
    final int errorCount = e.getBindingResult().getErrorCount();
    final StringBuilder sb = new StringBuilder("Validation failed for argument ")
            .append(e.getParameter().getParameterName()).append(", with ").append(errorCount)
            .append(errorCount > 1 ? " errors: " : " error: ");

    // append the sorted error messages to the introduction and set as the
    // service response message.
    sb.append(StringUtils.join(errorMessages, ","));

    message = sb.toString();
}

From source file:org.opentestsystem.shared.web.AbstractRestController.java

/**
 * Catch validation exception and return customized error message
 *///w  w w  .  j  a  v a  2s  . com
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
@ResponseBody
public ResponseError handleMethodArgumentNotValidException(final MethodArgumentNotValidException except) {
    final List<FieldError> errors = except.getBindingResult().getFieldErrors();
    final Map<String, List<String>> errorsByField = new TreeMap<String, List<String>>();
    for (final FieldError error : errors) {
        if (errorsByField.get(error.getField()) == null) {
            errorsByField.put(error.getField(), new ArrayList<String>());
        }
        final List<String> messageList = errorsByField.get(error.getField());
        String rejectedValue = "";
        if (error.getRejectedValue() == null) {
            rejectedValue = "null";
        } else {
            rejectedValue = error.getRejectedValue().toString();
        }
        final List<String> args = Lists.newArrayList(error.getField(), rejectedValue);
        if (error.getArguments() != null) {
            final Iterable<String> argsToAdd = Iterables.transform(Arrays.asList(error.getArguments()),
                    TO_STRING_FUNCTION);
            args.addAll(Lists.newArrayList(argsToAdd));
        }
        messageList.add(getLocalizedMessage(error.getDefaultMessage(), args.toArray(new String[args.size()])));
    }

    // sort error messages
    for (final Map.Entry<String, List<String>> entry : errorsByField.entrySet()) {
        Collections.sort(entry.getValue());
    }

    return new ResponseError(errorsByField);
}