List of usage examples for org.springframework.validation BindException getGlobalErrors
@Override
public List<ObjectError> getGlobalErrors()
From source file:tv.arte.resteventapi.web.errors.GlobalDefaultExceptionHandler.java
/** * Handle all exceptions of type {@link BindException} thrown by (or passing trough) the Controller's layer * /*from w ww . j ava2s. c o m*/ * @param response The HttpServletResponse * @param e Thrown RestEventApiValidationException * @return * @throws Exception */ @ExceptionHandler(value = BindException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) public ModelAndView springBindExceptionExceptionHandler(HttpServletRequest request, BindException 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.getGlobalErrors()) { restEventApiStandardResponse.addError(new RestEventApiMessage(globalError.getDefaultMessage(), this.messageSource.getMessage(globalError.getCode(), globalError.getArguments(), descriprionNotAvailableDefaultMessage, userLocale))); } for (FieldError fieldError : e.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.asual.summer.core.ErrorResolver.java
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception e) {//from w w w . jav a 2s .c o m if (e instanceof BindException) { BindException be = (BindException) e; Map<String, Map<String, Object>> errors = new HashMap<String, Map<String, Object>>(); for (FieldError fe : (List<FieldError>) be.getFieldErrors()) { Map<String, Object> error = new HashMap<String, Object>(); Object[] args = fe.getArguments(); String key = fe.isBindingFailure() ? fe.getCodes()[2].replaceFirst("typeMismatch", "conversion") : "validation." + fe.getCodes()[2]; String message = ResourceUtils.getMessage(key, args); if (message == null) { if (!fe.isBindingFailure()) { if (key.split("\\.").length > 3) { message = ResourceUtils .getMessage(key.substring(0, key.indexOf(".", key.indexOf(".") + 1)) + key.substring(key.lastIndexOf(".")), args); } if (message == null && key.split("\\.").length > 2) { message = ResourceUtils .getMessage(key.substring(0, key.indexOf(".", key.indexOf(".") + 1)), args); } } else if (fe.isBindingFailure() && key.split("\\.").length > 2) { message = ResourceUtils.getMessage( key.substring(0, key.indexOf(".")) + key.substring(key.lastIndexOf(".")), args); } else { message = fe.getDefaultMessage(); } } error.put("message", message != null ? message : "Error (" + key + ")"); error.put("value", fe.getRejectedValue()); errors.put(fe.getField(), error); } for (ObjectError oe : (List<ObjectError>) be.getGlobalErrors()) { Map<String, Object> error = new HashMap<String, Object>(); Object[] args = oe.getArguments(); String key = "global" + (oe.getCodes() != null ? "." + oe.getCodes()[2] : ""); String message = ResourceUtils.getMessage(key, args); if (message == null) { if (key.split("\\.").length > 3) { message = ResourceUtils.getMessage(key.substring(0, key.indexOf(".", key.indexOf(".") + 1)) + key.substring(key.lastIndexOf(".")), args); } if (message == null && key.split("\\.").length > 2) { message = ResourceUtils.getMessage(key.substring(0, key.indexOf(".", key.indexOf(".") + 1)), args); } if (message == null) { message = oe.getDefaultMessage(); } } error.put("message", message != null ? message : "Error (" + key + ")"); error.put("value", oe.getObjectName()); errors.put(oe.getObjectName(), error); } String form = (String) RequestUtils.getParameter("_form"); if (form != null) { if (request.getAttribute(ERRORS) == null) { request.setAttribute(ERRORS, errors); request.setAttribute(be.getObjectName(), be.getTarget()); return new ModelAndView(new InternalResourceView( form.concat(form.contains("?") ? "&" : "?").concat("_error=true"))); } } else { List<String> pairs = new ArrayList<String>(); for (String key : errors.keySet()) { pairs.add(key + "=" + errors.get(key).get("message")); } try { response.sendError(HttpServletResponse.SC_BAD_REQUEST, StringUtils.join(pairs, ";")); } catch (IOException ioe) { logger.error(ioe.getMessage(), ioe); } } } return null; }