Java 有没有办法获取@RequestParam的BindingResult?

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。太好了 但是仅仅创建一个表单

我正在使用Spring3PortletMVC。仅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.typemischException:转换失败 将“java.lang.String”类型的值转换为所需的“int”类型;嵌套 异常为java.lang.NumberFormatException:对于输入字符串:“q”


问题:即使
@RequestParam
类型转换失败,是否有方法继续执行方法并处理其中的绑定错误?我尝试将
@RequestParam
设置为非必需,并为其提供默认值,但没有帮助。

Spring引用仅允许命令或表单对象使用BindingResult

org.springframework.validation.Errors/org.springframework.validation.BindingResult前一个命令或表单对象(前一个方法参数)的验证结果

因此,您可能需要自己实现它

  • 我认为您可以尝试使用定制(参见此示例)
  • 还有另外一个当前仍然开放的堆栈溢出问题:--我感觉这个问题的解决方案可能会为您的解决方案提供很好的输入

或者将单个
int
封装在一个命令对象中,并在该对象上使用绑定结果(这里可以找到一个示例:)

如果不支持开箱即用,那么我想我可以使用单个值bean,谢谢