【问题标题】:Spring: Handling errors when type mismatch in @RequestParamSpring:在@RequestParam 中类型不匹配时处理错误
【发布时间】:2012-12-07 10:22:53
【问题描述】:

我有一个请求处理程序(@Controller 类中的方法),在提交表单时调用了一些 @RequestParam 参数。我有各种类型的参数,如字符串、整数、枚举和对象...... 提交表单时,如果 spring 无法将参数绑定到 arg,则返回响应 错误 400 或 500(我还不明白每个错误对应的情况)。 我更愿意通过向用户发送反馈来处理这种不匹配,突出显示表单中的哪个字段不好以及为什么......

这样做的一个简单案例是将所有@RequestParams 更改为字符串,并在处理程序内进行转换,并在出现任何错误时进行反馈。 (错误可能从类型不匹配到无效参数(即年龄的负数)有所不同。

有没有更好的办法?

【问题讨论】:

    标签: spring spring-mvc error-handling


    【解决方案1】:

    @RequestParam 最适合参数由应用程序生成而不是用户输入的情况。

    如果您想向用户提供反馈,最好使用带有@ModelAttributeBindingResult 的传统表单处理方法。这样您就可以执行任意验证以及provide meaningful error messages for type mismatch errors

    【讨论】:

    • 您所说的“对于您的应用程序生成参数的情况”是什么意思?我的应用程序如何生成 requestParam?你的意思是转发请求?
    • @ApollonDigital:我的意思是当用户点击你的应用程序生成的链接(带有参数)而不是在表单中输入值的情况。
    • 在任何情况下,您都无法确定是否有任何请求可以到达服务器。任何人都可以创建和发送自定义请求。我不认为实现应该有所不同。无论如何......我对 Spring 比较陌生,所以任何额外的细节都会被应用。我搜索了一下,发现类似 JSR-303 的东西......我不知道它是什么,是否与 javax.validation 包有任何关系......
    猜你喜欢
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 2020-01-16
    • 2011-07-13
    • 1970-01-01
    相关资源
    最近更新 更多