Java 有没有办法获取@RequestParam的BindingResult?
我正在使用Spring3PortletMVC。仅MVC中的验证/绑定应该是相同的 我只有一个Java 有没有办法获取@RequestParam的BindingResult?,java,spring,spring-mvc,validation,Java,Spring,Spring Mvc,Validation,我正在使用Spring3PortletMVC。仅MVC中的验证/绑定应该是相同的 我只有一个int表单字段。当我在做 void doSmth(MyForm form, BindingResult bindingResult) throws ... { int bindErrors = bindingResult.getErrorCount()) ... 并提交一个无法解析为int的字段值,该方法将被执行,bindErrors为1。此方法接收的表单字段值为0。太好了 但是仅仅创建一个表单
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.typemischException:转换失败
将“java.lang.String”类型的值转换为所需的“int”类型;嵌套
异常为java.lang.NumberFormatException:对于输入字符串:“q”
问题:即使
@RequestParam
类型转换失败,是否有方法继续执行方法并处理其中的绑定错误?我尝试将@RequestParam
设置为非必需,并为其提供默认值,但没有帮助。Spring引用仅允许命令或表单对象使用BindingResult
org.springframework.validation.Errors/org.springframework.validation.BindingResult前一个命令或表单对象(前一个方法参数)的验证结果
因此,您可能需要自己实现它
- 我认为您可以尝试使用定制(参见此示例)
- 还有另外一个当前仍然开放的堆栈溢出问题:--我感觉这个问题的解决方案可能会为您的解决方案提供很好的输入
或者将单个
int
封装在一个命令对象中,并在该对象上使用绑定结果(这里可以找到一个示例:)如果不支持开箱即用,那么我想我可以使用单个值bean,谢谢