@SuppressWarnings("unchecked") @Nullable private <T extends ObjectError> T escapeObjectError(@Nullable T source) { if (source == null) { return null; } String defaultMessage = source.getDefaultMessage(); if (defaultMessage != null) { defaultMessage = HtmlUtils.htmlEscape(defaultMessage); } if (source instanceof FieldError) { FieldError fieldError = (FieldError) source; Object value = fieldError.getRejectedValue(); if (value instanceof String) { value = HtmlUtils.htmlEscape((String) value); } return (T) new FieldError( fieldError.getObjectName(), fieldError.getField(), value, fieldError.isBindingFailure(), fieldError.getCodes(), fieldError.getArguments(), defaultMessage); } else { return (T) new ObjectError( source.getObjectName(), source.getCodes(), source.getArguments(), defaultMessage); } }
private OriginTrackedFieldError(FieldError fieldError, Origin origin) { super(fieldError.getObjectName(), fieldError.getField(), fieldError.getRejectedValue(), fieldError.isBindingFailure(), fieldError.getCodes(), fieldError.getArguments(), fieldError.getDefaultMessage()); this.origin = origin; }
@SuppressWarnings("unchecked") @Nullable private <T extends ObjectError> T escapeObjectError(@Nullable T source) { if (source == null) { return null; } String defaultMessage = source.getDefaultMessage(); if (defaultMessage != null) { defaultMessage = HtmlUtils.htmlEscape(defaultMessage); } if (source instanceof FieldError) { FieldError fieldError = (FieldError) source; Object value = fieldError.getRejectedValue(); if (value instanceof String) { value = HtmlUtils.htmlEscape((String) value); } return (T) new FieldError( fieldError.getObjectName(), fieldError.getField(), value, fieldError.isBindingFailure(), fieldError.getCodes(), fieldError.getArguments(), defaultMessage); } else { return (T) new ObjectError( source.getObjectName(), source.getCodes(), source.getArguments(), defaultMessage); } }
@Test public void testValidationUtilsEmptyVariants() { TestBean tb = new TestBean(); Errors errors = new BeanPropertyBindingResult(tb, "tb"); ValidationUtils.rejectIfEmpty(errors, "name", "EMPTY_OR_WHITESPACE", new Object[] {"arg"}); assertTrue(errors.hasFieldErrors("name")); assertEquals("EMPTY_OR_WHITESPACE", errors.getFieldError("name").getCode()); assertEquals("arg", errors.getFieldError("name").getArguments()[0]); errors = new BeanPropertyBindingResult(tb, "tb"); ValidationUtils.rejectIfEmpty(errors, "name", "EMPTY_OR_WHITESPACE", new Object[] {"arg"}, "msg"); assertTrue(errors.hasFieldErrors("name")); assertEquals("EMPTY_OR_WHITESPACE", errors.getFieldError("name").getCode()); assertEquals("arg", errors.getFieldError("name").getArguments()[0]); assertEquals("msg", errors.getFieldError("name").getDefaultMessage()); }
@Test public void testValidationUtilsEmptyOrWhitespaceVariants() { TestBean tb = new TestBean(); tb.setName(" "); Errors errors = new BeanPropertyBindingResult(tb, "tb"); ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name", "EMPTY_OR_WHITESPACE", new Object[] {"arg"}); assertTrue(errors.hasFieldErrors("name")); assertEquals("EMPTY_OR_WHITESPACE", errors.getFieldError("name").getCode()); assertEquals("arg", errors.getFieldError("name").getArguments()[0]); errors = new BeanPropertyBindingResult(tb, "tb"); ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name", "EMPTY_OR_WHITESPACE", new Object[] {"arg"}, "msg"); assertTrue(errors.hasFieldErrors("name")); assertEquals("EMPTY_OR_WHITESPACE", errors.getFieldError("name").getCode()); assertEquals("arg", errors.getFieldError("name").getArguments()[0]); assertEquals("msg", errors.getFieldError("name").getDefaultMessage()); }
@Override protected boolean matches(Object item, Description mismatchDescription) { if (item instanceof FieldError) { FieldError fieldError = (FieldError) item; boolean matches = fieldError.getArguments() != null && fieldError.getArguments().length == 1 && fieldError.getArguments()[0].toString().contains(this.argument0) && fieldError.getDefaultMessage().equals(this.defaultMessage); if (!matches) { mismatchDescription.appendText(item.toString()); } return matches; } else { mismatchDescription.appendText(item.toString()); return false; } }
private List<String> constructErrorMessages(String field, Locale locale, BindingResult bindingResult) { List<String> errorMessages = new ArrayList<>(); if (bindingResult != null) { for (FieldError error : bindingResult.getFieldErrors(field)) { String msg = this.messageSource.getMessage(error.getCode(), error.getArguments(), error.getDefaultMessage(), locale); errorMessages.add(msg); } } return errorMessages; } }
String message = errorMessageSource.getMessage(err.getCode(), err.getArguments(), null); errors.add(new WebValidationError(err.getCode(), err.getField(), message));
private List<ValidationError> getFieldErrorsAsValidationErrors(Lang lang, BindingResult result) { return result.getFieldErrors().stream().map(error -> { String key = error.getObjectName() + "." + error.getField(); if (key.startsWith("target.") && rootName == null) { key = key.substring(7); } if (error.isBindingFailure()) { ImmutableList.Builder<String> builder = ImmutableList.builder(); final Messages msgs = lang != null ? new MessagesImpl(lang, this.messagesApi) : null; for (String code: error.getCodes()) { code = REPLACE_TYPEMISMATCH.matcher(code).replaceAll(Matcher.quoteReplacement(INVALID_MSG_KEY)); if (msgs == null || msgs.isDefinedAt(code)) { builder.add(code); } } final ImmutableList<String> messages = builder.build(); return new ValidationError(key, messages.isEmpty() ? Arrays.asList(INVALID_MSG_KEY) : messages.reverse(), convertErrorArguments(error.getArguments())); } else { return new ValidationError(key, error.getDefaultMessage(), convertErrorArguments(error.getArguments())); } }).collect(Collectors.toList()); }
private List<ValidationError> getFieldErrorsAsValidationErrors(Lang lang, BindingResult result) { return result.getFieldErrors().stream().map(error -> { String key = error.getObjectName() + "." + error.getField(); if (key.startsWith("target.") && rootName == null) { key = key.substring(7); } if (error.isBindingFailure()) { ImmutableList.Builder<String> builder = ImmutableList.builder(); final Messages msgs = lang != null ? new MessagesImpl(lang, this.messagesApi) : null; for (String code: error.getCodes()) { code = REPLACE_TYPEMISMATCH.matcher(code).replaceAll(Matcher.quoteReplacement(INVALID_MSG_KEY)); if (msgs == null || msgs.isDefinedAt(code)) { builder.add(code); } } final ImmutableList<String> messages = builder.build(); return new ValidationError(key, messages.isEmpty() ? Arrays.asList(INVALID_MSG_KEY) : messages.reverse(), convertErrorArguments(error.getArguments())); } else { return new ValidationError(key, error.getDefaultMessage(), convertErrorArguments(error.getArguments())); } }).collect(Collectors.toList()); }
private List<ValidationError> getFieldErrorsAsValidationErrors(Lang lang, BindingResult result) { return result.getFieldErrors().stream().map(error -> { String key = error.getObjectName() + "." + error.getField(); if (key.startsWith("target.") && rootName == null) { key = key.substring(7); } if (error.isBindingFailure()) { ImmutableList.Builder<String> builder = ImmutableList.builder(); final Messages msgs = lang != null ? new MessagesImpl(lang, this.messagesApi) : null; for (String code: error.getCodes()) { code = REPLACE_TYPEMISMATCH.matcher(code).replaceAll(Matcher.quoteReplacement(INVALID_MSG_KEY)); if (msgs == null || msgs.isDefinedAt(code)) { builder.add(code); } } final ImmutableList<String> messages = builder.build(); return new ValidationError(key, messages.isEmpty() ? Arrays.asList(INVALID_MSG_KEY) : messages.reverse(), convertErrorArguments(error.getArguments())); } else { return new ValidationError(key, error.getDefaultMessage(), convertErrorArguments(error.getArguments())); } }).collect(Collectors.toList()); }
Locale loc = locale != null ? locale : Locale.getDefault(); message = messageSource.getMessage(fieldError.getCode(), fieldError.getArguments(), loc);
public static TargettedMessage SpringErrortoTargettedMessage(Object erroro) { if (erroro instanceof FieldError) { FieldError error = (FieldError) erroro; TargettedMessage togo = new TargettedMessage(error.getCodes(), error .getArguments(), error.getField()); return togo; } else if (erroro instanceof ObjectError) { ObjectError error = (ObjectError) erroro; TargettedMessage togo = new TargettedMessage(error.getCodes(), error .getArguments(), TargettedMessage.TARGET_NONE); return togo; } else throw new IllegalArgumentException( "Cannot convert Spring Error of unknown " + erroro.getClass()); }
/** * Initializes the Errors property on target. The target will be assigned a new * Errors property. If the target contains any binding errors, those binding * errors will be copied in to the new Errors property. Note that the binding errors * will no longer be flagged as binding errors * * @param target object to initialize * @return the new Errors object */ protected Errors setupErrorsProperty(Object target) { MetaClass mc = GroovySystem.getMetaClassRegistry().getMetaClass(target.getClass()); Errors errors = new ValidationErrors(target); Errors originalErrors = (Errors) mc.getProperty(target, ERRORS_PROPERTY); for (Object o : originalErrors.getFieldErrors()) { FieldError fe = (FieldError)o; if (fe.isBindingFailure()) { errors.rejectValue(fe.getField(), fe.getCode(), fe.getArguments(), fe.getDefaultMessage()); } } mc.setProperty(target, ERRORS_PROPERTY, errors); return errors; } }
@Override public void convert(final BindException exception) { final BindingResult bind = exception.getBindingResult(); for (final FieldError o : bind.getFieldErrors()) { fields.add(new FieldErrorMessageError(o.getField(), getMessageSource().getMessage(o.getCode(), o.getArguments()))); } setMessage(getMessageSource().getMessage(getCode())); }
final String message = requestContext.getMessage(fieldError, false); final DetailedError errorObject = new DetailedError(fieldError.getField(), fieldError.getCode(), fieldError.getArguments(), message); if (errorObjects == null) { errorObjects = new ArrayList<DetailedError>(errors.getErrorCount() + 2);
@SuppressWarnings("unchecked") @Nullable private <T extends ObjectError> T escapeObjectError(@Nullable T source) { if (source == null) { return null; } String defaultMessage = source.getDefaultMessage(); if (defaultMessage != null) { defaultMessage = HtmlUtils.htmlEscape(defaultMessage); } if (source instanceof FieldError) { FieldError fieldError = (FieldError) source; Object value = fieldError.getRejectedValue(); if (value instanceof String) { value = HtmlUtils.htmlEscape((String) value); } return (T) new FieldError( fieldError.getObjectName(), fieldError.getField(), value, fieldError.isBindingFailure(), fieldError.getCodes(), fieldError.getArguments(), defaultMessage); } else { return (T) new ObjectError( source.getObjectName(), source.getCodes(), source.getArguments(), defaultMessage); } }
@SuppressWarnings("unchecked") @Nullable private <T extends ObjectError> T escapeObjectError(@Nullable T source) { if (source == null) { return null; } String defaultMessage = source.getDefaultMessage(); if (defaultMessage != null) { defaultMessage = HtmlUtils.htmlEscape(defaultMessage); } if (source instanceof FieldError) { FieldError fieldError = (FieldError) source; Object value = fieldError.getRejectedValue(); if (value instanceof String) { value = HtmlUtils.htmlEscape((String) value); } return (T) new FieldError( fieldError.getObjectName(), fieldError.getField(), value, fieldError.isBindingFailure(), fieldError.getCodes(), fieldError.getArguments(), defaultMessage); } else { return (T) new ObjectError( source.getObjectName(), source.getCodes(), source.getArguments(), defaultMessage); } }
public void testGetFieldErrorsWildcard() { messages.addMessage(new MessageBuilder().source("datum2").error().defaultText("Error").build()); assertEquals(1, model.getFieldErrorCount("da*")); FieldError error = model.getFieldError("da*"); assertEquals(null, error.getCode()); assertEquals(null, error.getCodes()); assertEquals(null, error.getArguments()); assertEquals("Error", error.getDefaultMessage()); }
public void testGetFieldError() { messages.addMessage(new MessageBuilder().source("datum2").error().defaultText("Error").build()); assertEquals(1, model.getErrorCount()); assertEquals(1, model.getFieldErrorCount()); assertEquals(0, model.getGlobalErrorCount()); FieldError error = model.getFieldError("datum2"); assertEquals(null, error.getCode()); assertEquals(null, error.getCodes()); assertEquals(null, error.getArguments()); assertEquals("Error", error.getDefaultMessage()); // we dont track this assertEquals(null, error.getRejectedValue()); assertTrue(!error.isBindingFailure()); FieldError error2 = model.getFieldErrors().get(0); assertEquals(error, error2); }