我遇到了将表单输入文本绑定到绑定表单的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”标记中打印消息?
谢谢!
答案 0 :(得分:0)
如果无法从文本设置值,则setAsText
方法应抛出IllegalArgumentException
(如方法签名所示)。
如果你从IllegalArgumentException
中抛出catch
,那么Spring应该为你添加错误。