在BindingResult中覆盖错误消息

时间:2013-06-12 22:02:30

标签: java spring-mvc data-binding error-handling

我正在使用Spring MVC 2.5。

我有一些字段,其中数字应该只是put中允许的数字。我在我正在寻找的UI上收到确切的错误消息。像

这样的东西
Failed to convert property value of type [java.lang.String] to required type [java.math.BigDecimal] for property executionThresholdAmount; nested exception is java.lang.NumberFormatException

我不想向用户显示这种消息。我使用message.properties文件来组织要显示的文本。

我唯一需要的是我想覆盖特定字段的错误消息。我不能这样做,但这是我用于

的技巧
if(result.hasFieldErrors()){

            List<FieldError> bindingErrors=( List<FieldError>)result.getFieldErrors();
            BindingResult fieldErrors=new BeanPropertyBindingResult (offerSetting, "offerSetting");
            for(FieldError error :bindingErrors ){
                String field=error.getField();                
                fieldErrors.rejectValue(field, "invalid.amount."+field);


            }


            result=fieldErrors;
            #more code

我正在做的是创建BeanPropertyBindingResult,它是BindingResult的一个实现,并使用我想要的消息填充错误字段,并将引用传递给结果对象,以便显示它。但是,我现在收到两个默认消息

like

Failed to convert property value of type [java.lang.String] to required type [java.math.BigDecimal] for property executionThresholdAmount; nested exception is java.lang.NumberFormatException

以及我想要的信息。像

这样的东西
"The amount for field price you entered is invalid"

有更好的想法吗?

1 个答案:

答案 0 :(得分:9)

尝试添加您的邮件属性文件,如下所示:

typeMismatch.objectClassName.field=Your custom message

在你的情况下:

typeMismatch.offerSetting.amount=The amount for field price you entered is invalid

适合我:)