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

理解Spring MVC中的"global Validator"

南宫建白
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如何理解我想让哪个验证器成为全局验证器?扫描每个实现Validator类?我可以用xml配置吗?如何使用这种方法?

我不理解Spring的描述:

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: schemaPlace="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsshttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"

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

共有1个答案

孙洋
2023-03-14

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

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

如果我在您的示例中正确理解了FooValidator,那么您希望在每次验证时将其作为全局验证器使用,因此将其定义为bean,并按照您在mvc:annotation-drivenXML条目中直接显示的方式将其插入。

在每个控制器之上,您可以通过@InitBinder注释进行自定义(仅在控制器负责的表单上应用)。

顺便说一下,在接收POST请求的方法中,您的参数是:您可以在之后有一个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 启动