SWF-1389 Fix issue in MessageContextErrors relating to use of JSR-303 validations
This commit is contained in:
@@ -26,6 +26,7 @@ import org.springframework.binding.expression.support.FluentParserContext;
|
||||
import org.springframework.binding.mapping.MappingResult;
|
||||
import org.springframework.binding.mapping.MappingResults;
|
||||
import org.springframework.binding.mapping.MappingResultsCriteria;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.validation.AbstractErrors;
|
||||
import org.springframework.validation.Errors;
|
||||
import org.springframework.validation.FieldError;
|
||||
@@ -81,7 +82,7 @@ public class MessageContextErrors extends AbstractErrors {
|
||||
public void rejectValue(String field, String errorCode, Object[] errorArgs, String defaultMessage) {
|
||||
field = fixedField(field);
|
||||
Class fieldType;
|
||||
if (expressionParser != null) {
|
||||
if (StringUtils.hasLength(field) && (expressionParser != null)) {
|
||||
FluentParserContext parserContext = new FluentParserContext().evaluate(boundObject.getClass());
|
||||
fieldType = expressionParser.parseExpression(field, parserContext).getValueType(boundObject);
|
||||
} else {
|
||||
|
||||
@@ -5,7 +5,9 @@ import java.util.Locale;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.springframework.binding.expression.spel.SpringELExpressionParser;
|
||||
import org.springframework.context.support.StaticMessageSource;
|
||||
import org.springframework.expression.spel.standard.SpelExpressionParser;
|
||||
import org.springframework.validation.DefaultMessageCodesResolver;
|
||||
import org.springframework.validation.MapBindingResult;
|
||||
|
||||
@@ -68,6 +70,23 @@ public class MessageContextErrorsTests extends TestCase {
|
||||
assertEquals(Severity.ERROR, msg.getSeverity());
|
||||
}
|
||||
|
||||
public void testGlobalError() {
|
||||
StaticMessageSource messageSource = new StaticMessageSource();
|
||||
messageSource.addMessage("foo", Locale.getDefault(), "bar");
|
||||
messageSource.addMessage("bar", Locale.getDefault(), "{0}");
|
||||
|
||||
DefaultMessageContext context = new DefaultMessageContext(messageSource);
|
||||
Object object = new Object();
|
||||
SpringELExpressionParser expressionParser = new SpringELExpressionParser(new SpelExpressionParser());
|
||||
MessageContextErrors errors = new MessageContextErrors(context, "object", object, expressionParser,
|
||||
new DefaultMessageCodesResolver(), null);
|
||||
errors.rejectValue(null, "bar", new Object[] { "boop" }, null);
|
||||
Message msg = context.getAllMessages()[0];
|
||||
assertEquals("", msg.getSource());
|
||||
assertEquals("boop", msg.getText());
|
||||
assertEquals(Severity.ERROR, msg.getSeverity());
|
||||
}
|
||||
|
||||
public void testAddAllErrors() {
|
||||
StaticMessageSource messageSource = new StaticMessageSource();
|
||||
messageSource.addMessage("foo", Locale.getDefault(), "bar");
|
||||
|
||||
Reference in New Issue
Block a user