gpt4 book ai didi

java - 有什么方法可以为@RequestParam 获取BindingResult?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:26:47 26 4
gpt4 key购买 nike

我正在使用 Spring 3 Portlet MVC。仅 MVC 中的验证/绑定(bind)应该是相同的。

我只有一个 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 类型转换失败,有没有办法继续执行方法并处理其中的绑定(bind)错误?我尝试使 @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)

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

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

关于java - 有什么方法可以为@RequestParam 获取BindingResult?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9019193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com