Java spring@valid不';行不通

Java spring@valid不';行不通,java,spring,validation,spring-mvc,Java,Spring,Validation,Spring Mvc,我发送了一个带有“postman”的“application/json”类型的POST请求,将参数“phone”设置为空字符串,通常它应该为注释“@NotEmpty”打印错误,但是它没有打印任何内容,并且工作得很好 控制器: @RequestMapping(value = "verify_smscode", method = RequestMethod.POST) @ResponseBody public ResponseDto verifySmsCode(HttpServletRe

我发送了一个带有“postman”的“application/json”类型的POST请求,将参数“phone”设置为空字符串,通常它应该为注释“@NotEmpty”打印错误,但是它没有打印任何内容,并且工作得很好

控制器:

  @RequestMapping(value = "verify_smscode", method = RequestMethod.POST)
  @ResponseBody
  public ResponseDto verifySmsCode(HttpServletRequest request,
      @Valid @RequestBody VerifySmsCodeParam params, Errors errors) {
    if(errors.hasErrors()) {
      System.out.println("error");
    }

    boolean success = userService.verifySmsCode(params.getPhone(), params.getSmsCode());

    Map<String, Object> result = new HashMap<>();
    result.put("status", success);
    return new ResponseDto(result);
  }
SpringMvcConfig:

@Configuration
@ComponentScan(basePackages="com.shit.voiceshare")
@EnableWebMvc
public class SpringMvcConfig extends WebMvcConfigurerAdapter {
  @Override
  public Validator getValidator() {
    LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean();
    localValidatorFactoryBean.setProviderClass(HibernateValidator.class);
    return localValidatorFactoryBean;
  }
}

是的,我在春天还是新的。但如果你觉得合适的话,这里有一个对我的情况的答案

要使@Valid工作,您应该包括两个包javax验证api和hibernate验证程序,但我只包括了验证api


javax.validation
验证api
2.0.0.1决赛
org.hibernate
休眠验证器
6.0.1.最终版本

您可能缺少依赖项


javax.validation
验证api
org.hibernate.validator
休眠验证器
另外,请确保正确导入
NotNull

import javax.validation.constraints.NotNull;

您是否尝试过使用
BindingResult
。可能是使用此方法的一个很好的例子。尝试使用Validated而不是ValidIt仍然不起作用
@Configuration
@ComponentScan(basePackages="com.shit.voiceshare")
@EnableWebMvc
public class SpringMvcConfig extends WebMvcConfigurerAdapter {
  @Override
  public Validator getValidator() {
    LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean();
    localValidatorFactoryBean.setProviderClass(HibernateValidator.class);
    return localValidatorFactoryBean;
  }
}