栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Spring Web MVC-验证单个请求参数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Web MVC-验证单个请求参数

没有什么内置做到这一点,不是
尚未反正。在当前发行版中,如果要进行自动验证,则仍然需要使用WebDataBinder将参数绑定到对象上。如果您使用的是SpringMVC,则值得学习,即使这不是您执行此任务的首选。

看起来像这样:

public ModelAndView createFoo(@PathVariable long level1,        @PathVariable long level2,        @Valid @ModelAttribute() FooWrapper fooWrapper,        BindingResult errors) {  if (errors.hasErrors() {     //handle errors, can just return if using Spring form:error tags.  }}public static class FooWrapper {  @NotNull  @Size(max=32)  private String fooName;  private String description;//getset}

如果您在类路径上具有Hibernate Validator 4或更高版本,并使用默认的分派器设置,则它应该“正常工作”。

由于评论变得越来越大,因此进行编辑:

这是在这不是“预期”的人Spring知道如何注入,如一个你的方法签名的任何对象

HttpRequest
ModelMap
等等,将得到的数据绑定。对于简单情况,只需将请求参数名称与bean属性名称进行匹配并调用setter即可实现。该
@ModelAttribute
存在的仅仅是个人风格的东西,在这种情况下,它没有做任何事情。JSR-303与@Valid在方法参数上的集成通过插入
WebDataBinder
。如果您使用
@RequestBody
,则使用的是基于spring确定请求正文的内容类型的对象编组器(通常仅来自http标头。)分派器servlet(
AnnotationMethodHandlerAdapter
确实)没有办法为任何封送编组“翻转验证开关”。它只是将Web请求的内容传递到消息转换器,并返回一个Object。不会生成BindingResult对象,因此无论如何都无法设置错误。

您仍然可以将验证器注入控制器中,然后在获取的对象上运行它,它只是与

@Valid
on参数中的on请求参数没有魔术集成
BindingResult



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/449552.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号