@initbinder不适用于特定的模型属性


问题内容

我正在使用@valid和@initbinder来验证传递给服务的数据,但是我遇到的问题@InitBinder是仅在全球范围内有效,即

@InitBinder // possible to leave off for global behavior
protected void initBinder(WebDataBinder binder){
    binder.setValidator(new LoginRequestValidator());
}

而不是像我有一个名为LoginRequest的模型对象那样的特定模型属性:

@InitBinder("LoginRequest") // possible to leave off for global behavior
protected void initBinder(WebDataBinder binder){
    binder.setValidator(new LoginRequestValidator());
}

在这种情况下,根本不会调用验证器。.这是正确的方法吗?还是我错过了什么?


问题答案:

查看您方法的签名,必须

@InitBinder("loginRequest")

小我

的值@InitBinder可以是以下之一

  • 模型属性的名称
  • 请求参数的名称
  • 如果以上都不适用,则可以使用类的名称,但以 小写字母开头 。这就是Spring将未命名属性公开给模型的方式。