我有这个带有参数的表格year
和name
:
/register?year=&name=test
我的课看起来像这样:
public class Organizer {
private String name;
private int year;
我的控制器将这两个参数映射到我的类Organizer
@RequestMapping("/register")
public String register(@Valid Organizer organizer, BindingResult errors...
问题是将参数year绑定到 int。春天给了我错误
无法将类型“java.lang.String”的属性值转换为属性“year”所需的类型“int”;嵌套异常是 java.lang.IllegalArgumentException:
我想出了如何添加自己的自定义属性编辑器,但getValue()
似乎从未被调用
@InitBinder
public void binder(WebDataBinder binder) {
binder.registerCustomEditor(int.class, new CustomIntEditor());
}
public class CustomIntEditor extends PropertyEditorSupport {
我认为当 year 参数不是值(-> catch 异常)时,我可以返回该int
值0
int
Integer.parseInt()
@Override
public void setAsText(String text) throws IllegalArgumentException {
//Some parsing and error handling
setValue((int)0);
}
我希望能够:
将字段设置
year
为int
值0
创建自定义错误消息:
organizer.year.invalid