dav*_*ooh 6 java spring spring-mvc
在我的 Spring MVC 控制器中,我有一个这样的方法:
public String myMethod(@RequestParam(defaultValue="0") int param) { ... }
Run Code Online (Sandbox Code Playgroud)
当我传递一个字符串作为我的值时,我param显然得到了一个NumberFormatException:
无法将“java.lang.String”类型的值转换为所需的“int”类型;嵌套异常是 java.lang.NumberFormatException: For input string: "test"
这很清楚...
所以我试图找到一种方法,在发生此错误时将用户重定向到默认页面。有没有通用的方法来实现这一目标?
目前我正在考虑使用 aString代替 anint来映射 my param,检查这是否可以解析int,然后切换到适当的逻辑,但这似乎是一种解决方法,而不是解决方案......
有没有更优雅的方法来处理这个问题并为 my 保持正确的类型绑定param?
我终于解决了添加CustomNumberEditor这样的问题:
@InitBinder
public void registerNumbersBinder(WebDataBinder binder) {
binder.registerCustomEditor(Integer.class, new CustomNumberEditor(Integer.class, true){
@Override
public void setAsText(String text) throws IllegalArgumentException {
try{
super.setAsText(text);
}catch (IllegalArgumentException ex){
setValue(0);
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2871 次 |
| 最近记录: |