Tom*_*mmy 5 java spring spring-mvc
我有这个表格与参数year和name:
/register?year=&name=test
Run Code Online (Sandbox Code Playgroud)
我的班级看起来像这样:
public class Organizer {
private String name;
private int year;
Run Code Online (Sandbox Code Playgroud)
我的控制器将这两个参数映射到我的班级 Organizer
@RequestMapping("/register")
public String register(@Valid Organizer organizer, BindingResult errors...
Run Code Online (Sandbox Code Playgroud)
问题是将参数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 {
Run Code Online (Sandbox Code Playgroud)
我认为当year参数不是int值0时,我能够返回int值(Integer.parseInt()- > catch exception)
@Override
public void setAsText(String text) throws IllegalArgumentException {
//Some parsing and error handling
setValue((int)0);
}
Run Code Online (Sandbox Code Playgroud)
我希望能够:
将字段设置year为int值0
创建自定义错误消息: organizer.year.invalid
更改int到Integer.这是一个自动装箱问题.由于year为空,因此无法将其转换为原始值(因为您未指定默认值).
然后,您可以对其@NotNull进行注释以获得所需的验证.
| 归档时间: |
|
| 查看次数: |
7888 次 |
| 最近记录: |