【发布时间】:2012-05-07 20:51:33
【问题描述】:
我有这个带有参数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。 Spring给了我错误
无法将类型“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 {
我认为当年份参数不是int 值时,我可以返回int 值0(Integer.parseInt() -> 捕获异常)
@Override
public void setAsText(String text) throws IllegalArgumentException {
//Some parsing and error handling
setValue((int)0);
}
我希望能够:
将字段
year设置为int值0创建自定义错误消息:
organizer.year.invalid
【问题讨论】:
标签: java spring spring-mvc