当前位置: 首页 > 知识库问答 >
问题:

理解Spring MVC中的“GlobalValidator”

潘弘博
2023-03-14

我有自定义验证器并在我的控制器中注册它

@Controller
public class MyController {

    @InitBinder
    protected void initBinder(WebDataBinder binder) {
        binder.setValidator(new FooValidator());
    }

    @RequestMapping("/foo", method=RequestMethod.POST)
    public void processFoo(@Valid Foo foo) { ... }

}

但是我也想在其他控制器中注册,这样就可以编写@valid和要验证的Foo对象。根据我所看到的,我理解我可以使用@ControllerAdviced类在每个控制器上注册验证器,或者使用

 <mvc:annotation-driven validator="globalValidator"/>

但是如何注册我的验证器,如何Spring理解我想要使哪个验证器成为全局验证器?是否扫描每个正在实现的验证器类?我能用xml配置来做吗?如何使用这种方法?

xmlns=“http://www.springframework.org/schema/beans”xmlns:mvc=“http://www.springframework.org/schema/mvc”xmlns:xsi=“http://www.w3.org/2001/xmlschema-instance”xsi:schemalocation=“http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xss http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd”>

<mvc:annotation-driven validator="globalValidator"/>

共有1个答案

郭志
2023-03-14

文档在验证部分非常清楚:

在Spring MVC中,您可以将其配置为全局验证器实例,在遇到@valid或@validated控制器方法参数时使用,和/或通过@initbinder方法作为控制器内的本地验证器。可以组合全局验证器实例和本地验证器实例来提供复合验证

如果我在您的示例中正确理解FooValidator,您希望在每次验证时将其作为全局验证器使用,那么将其定义为bean,并将其注入,直接显示在mvc:annotation-drivedXML条目中,就像您已经显示的那样。

在每个控制器之上,您可以通过@initbinder注释自定义(仅应用于控制器相关表单之上)。

作为附带说明,在@requestmapping方法中接收POST请求,其中@valid参数为:您可以在此之后有一个bindingresult条目,以便对路由等作出决策。在示例中:

@RequestMapping("/foo", method=RequestMethod.POST)
public String processFoo(@Valid Foo foo, BindingResult result) {

   if(result.hasErrors()) {
      return "go/that/way";
   }
   //..
}
 类似资料:
  • 本文向大家介绍springmvc处理响应数据的解析,包括了springmvc处理响应数据的解析的使用技巧和注意事项,需要的朋友参考一下 1. ModelAndView 相关的成员变量和方法 private Object view; 描述视图信息 private ModelMap model 描述模型数据(响应数据) public void setViewName(String viewName)

  • 本文向大家介绍springMVC图片上传的处理方式详解,包括了springMVC图片上传的处理方式详解的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了springMVC图片上传的处理方式,供大家参考,具体内容如下 首先需要依赖的jar包: 页面: 大家如果觉得默认的上传文件的按钮不好看,可以引入下面的css样式: 前端脚本: 后端接收: 以上就是本文的全部内容,希望对大家的学习有所帮

  • 本文向大家介绍springmvc中RequestMappingHandlerAdapter与HttpMessageConverter的装配讲解,包括了springmvc中RequestMappingHandlerAdapter与HttpMessageConverter的装配讲解的使用技巧和注意事项,需要的朋友参考一下 一.DispatcherServlet 默认装配 RequestMappingH

  • 本文向大家介绍SpringMVC基于注解的Controller详解,包括了SpringMVC基于注解的Controller详解的使用技巧和注意事项,需要的朋友参考一下 概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Spring 2.5 又为 Spring MVC 引入了注解驱动功能。现在你无须让 Controller 继承任何接口,无需在 XML 配置文件中定义请求和

  • 这是我的控制器: 在上面的If-Guard中,我想要实现的是,如果vehicle对象没有LicensePlate成员,则发回相应的HTTP状态头冲突或其他东西。 我来自一个节点和Express后台,我被用来设置我的头,发送响应和完成它。然而,在这种情况下(JPA)它似乎不起作用。有什么想法吗?

  • 本文向大家介绍SpringMVC底层执行流程及原理解析,包括了SpringMVC底层执行流程及原理解析的使用技巧和注意事项,需要的朋友参考一下 一个简单的HelloSpringMVC程序 先在web,xml中注册一个前端控制器(DispatcherServlet) 配置文件(springmvc-servlet.xml) HandlerMapper是处理器映射器-->根据请求的地址去找处理器(如案例

  • 本文向大家介绍springmvc处理模型数据Map过程解析,包括了springmvc处理模型数据Map过程解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了springmvc处理模型数据Map过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 SpringmvcTest.java Index.jsp success.jsp 启动

  • 我正在进行一个在线课程,其中一个问题要求我们根据列表中的索引将名称与基于以下列表和字典的关键字的理解中的工资相匹配: 期望输出: 我写了以下内容: 返回一个空集。 有人能给我一两个提示(不是代码答案)如何解决这个问题吗? 谢谢