加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – 获取@RequestParam的BindingResult的任何方法?

发布时间:2020-12-15 01:25:22 所属栏目:大数据 来源:网络整理
导读:我正在使用Spring 3 Portlet MVC.仅MVC中的验证/绑定应该是相同的. 我只有一个int表单字段.当我在做的时候 void doSmth(MyForm form,BindingResult bindingResult) throws ... { int bindErrors = bindingResult.getErrorCount()) ... 并提交一个无法解析为i

我正在使用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 Could
not complete request
org.springframework.beans.TypeMismatchException: Failed to convert
value of type ‘java.lang.String’ to required type ‘int’; nested
exception is java.lang.NumberFormatException: For input string: “q”

问题:即使@RequestParam类型转换失败,有没有办法继续执行方法并处理绑定错误?我尝试不要求@RequestParam并为它提供默认值 – 没有帮助.

最佳答案
Spring引用仅允许BindingResult用于命令或表单对象.

org.springframework.validation.Errors / org.springframework.validation.BindingResult validation results for a preceding command or form object (the immediately preceding method argument).

(15.3.2.3 Supported handler method arguments and return types)

所以你可能需要自己实现它.

>我认为您可以尝试使用Custom MethodArgumentResolver(请参阅此blog的示例).
>还有另一个当前仍然存在的堆栈溢出问题:How to customize parameter names when binding spring mvc command objects – 我觉得这个问题的解决方案可以为您的解决方案提供良好的输入.

或者将您的单个int包装在一个命令对象中并使用该对象的绑定结果(可以在此处找到一个示例:https://stackoverflow.com/a/13407434/280244)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读