【发布时间】:2012-02-19 14:38:12
【问题描述】:
我正在使用 Spring 3 Portlet MVC。仅 MVC 中的验证/绑定应该是相同的。
我只有一个 int 表单域。当我在做的时候
void doSmth(MyForm form, BindingResult bindingResult) throws ... {
int bindErrors = bindingResult.getErrorCount())
...
并提交一个无法解析为 int 的字段值,此方法被执行,bindErrors 为 1。此方法接收的表单字段值为 0。太好了。
但是创建一个只包含单个字段的表单并不好。
我将代码更改为:
void doSmth(@RequestParam int userId, BindingResult bindingResult) ... {
int bindErrors = bindingResult.getErrorCount())
...
并在浏览器中收到 Portlet 不可用 消息和此异常:
org.springframework.web.portlet.FrameworkPortlet processRequest 可以 未完成请求 org.springframework.beans.TypeMismatchException:转换失败 “java.lang.String”类型的值到所需类型“int”;嵌套的 异常是 java.lang.NumberFormatException:对于输入字符串:“q”
问题:即使@RequestParam 类型转换失败,是否有任何方法可以继续执行方法并处理其中的绑定错误?我尝试使 @RequestParam 不需要并为其提供默认值 - 没有帮助。
【问题讨论】:
标签: java spring spring-mvc validation