【问题标题】:@RequestParam validation@RequestParam 验证
【发布时间】:2011-11-16 23:50:51
【问题描述】:

有没有办法用 spring 验证请求参数而不在每个函数中检查它? 例如,控制器中的每个方法都会生成元素列表,并且每个方法都接受 'from' 和 'to' 参数,因此验证是: from >=0 && to > 0 && from < to

我想将 spring 配置为返回 BAD_REQUEST 或其他一些状态,就像它无法将字符串转换为 int 参数时一样。

谢谢。

【问题讨论】:

    标签: java spring validation spring-mvc


    【解决方案1】:

    如果您使用@RequestBody 使用表单支持对象,那么您可以使用 JSR-303 bean 验证,您可以在其中注释您的表单 bean。有关详细信息,请参阅http://static.springsource.org/spring/docs/current/spring-framework-reference/html/validation.html#validation-beanvalidation。然后您就无需为Validator 对象或其他编码而烦恼 - 您只需注释即可。

    【讨论】:

    • 很遗憾它不是表格。
    • 如果它不是客户端 HTML <form>,那没关系;服务器上的 Spring 对 HTML 表单一无所知。它仍然会自动将请求中的名称-值对映射到通过 @RequestBody 配置的 Command 对象。
    • 这是一个在接受的答案中有完整的 JSR-303 验证器实现的问题。您可以修改它以适合您的情况。 stackoverflow.com/questions/1972933/…
    【解决方案2】:

    直接 - 不。但是如果你将它们包装在一个类中,你可以有一个Validator 那个.supports(YourClass.class)validate(..) 它。

    public class Range {
       private int from;
       private int to;
       //setters & getters
    }
    

    【讨论】:

    • 我不确定如何包装请求映射的参数,例如 /users?from=1&to=20。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    相关资源
    最近更新 更多