Spring MVC:管理BindingException

时间:2012-07-31 07:53:13

标签: java spring spring-mvc

我遇到了将表单输入文本绑定到绑定表单的bean的Integer字段的问题。如果我在输入文本中写错了数字(例如:“12b”),我有一个Binding Exception。所以,我以这种方式在我的控制器中设置了一个@InitBinder:

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        binder.registerCustomEditor(Integer.class, new CustomIntegerBinder());
    }

CustomIntegerBinder的实现方式如下:

    public class CustomIntegerBinder extends PropertyEditorSupport {

        @Override
        public void setAsText(String text) throws IllegalArgumentException {
            try {
                setValue(Integer.parseInt(text));
            } catch (Exception e) {
                //I WANT TO ADD ERROR TO THE ERROR LIST!
            }
        }

        @Override
        public String getAsText() {
            return getValue().toString();
        }
    }        

我的问题是:如何成功向错误列表添加消息错误,以便转换错误不会导致应用程序崩溃,而是在jsp的“errors”标记中打印消息?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果无法从文本设置值,则setAsText方法应抛出IllegalArgumentException(如方法签名所示)。

如果你从IllegalArgumentException中抛出catch,那么Spring应该为你添加错误。