在我的Spring MVC控制器中,我有一个这样的方法:
public String myMethod(@RequestParam(defaultValue="0") int param) { ... }
当我将字符串作为param
的值传递时,我明显得到NumberFormatException
:
无法转换类型' java.lang.String'的值要求的类型' int&#39 ;;嵌套异常是java.lang.NumberFormatException:对于输入字符串:" test"
那很清楚......
因此,当发生此错误时,我正试图找到将用户重定向到默认页面的方法。有没有通用的方法来实现这一目标?
目前我正在考虑使用String
代替int
来映射我的param
,请检查这是否可解析为int
和然后切换到适当的逻辑,但这似乎是一种解决方法,而不是解决方案......
是否有更优雅的方法来处理此问题并为param
保持正确的类型绑定?
答案 0 :(得分:1)
请查看@Valid注释。希望这可以帮助。此注释有助于为请求参数添加更多验证。
答案 1 :(得分:0)
我终于解决了添加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);
}
}
});
}
答案 2 :(得分:-1)
在这种情况下,您需要处理“MethodArgumentTypeMismatchException” 你可以使用@ControllerAdvice