Ole*_*eev 7 java validation spring spring-mvc
我正在使用Spring 3 Portlet MVC.仅MVC中的验证/绑定应该是相同的.
我只有一个int表单字段.当我在做的时候
void doSmth(MyForm form, BindingResult bindingResult) throws ... {
int bindErrors = bindingResult.getErrorCount())
...
Run Code Online (Sandbox Code Playgroud)
并提交一个无法解析的字段值,因为int此方法被执行,并且bindErrors是1.此方法接收的表单字段值为0.这很好.
但是创建一个仅包含单个字段的表单并不是很好.
我正在将代码更改为:
void doSmth(@RequestParam int userId, BindingResult bindingResult) ... {
int bindErrors = bindingResult.getErrorCount())
...
Run Code Online (Sandbox Code Playgroud)
并在浏览器中获取Portlet不可用的消息和此异常:
org.springframework.web.portlet.FrameworkPortlet processRequest无法完成请求org.springframework.beans.TypeMismatchException:无法将类型'java.lang.String'的值转换为必需的类型'int'; 嵌套异常是java.lang.NumberFormatException:对于输入字符串:"q"
问题:即使@RequestParam类型转换失败,有没有办法继续执行方法并处理绑定错误?我尝试@RequestParam不需要并提供默认值 - 没有帮助.
Spring 参考仅允许对命令或表单对象使用 BindingResult。
org.springframework.validation.Errors / org.springframework.validation.BindingResult 前面的命令或表单对象(紧邻前面的方法参数)的验证结果。
所以你可能需要自己实现它。
或者将单个int命令对象包装在命令对象中,并使用该对象上的绑定结果(可以在此处找到示例:/sf/answers/938520411/)
| 归档时间: |
|
| 查看次数: |
6147 次 |
| 最近记录: |