我正在使用@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());
}

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

最佳答案

查看您方法的签名,必须

@InitBinder("loginRequest")

带有小l
@InitBinder的值可以是以下值之一
  • 模型属性的名称
  • 请求参数的名称
  • 如果以上都不适用,则可以使用类的名称,但以小写字母开头。这就是Spring将未命名属性公开给模型的方式。
  • 关于java - @initbinder不适用于特定的模型属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17341543/

    10-10 14:17