【发布时间】:2017-09-12 04:55:08
【问题描述】:
我用「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);
}
型号:
@Data
@NoArgsConstructor
public class VerifySmsCodeParam {
@NotEmpty //import org.hibernate.validator.constraints.NotEmpty;
private String phone;
@NotEmpty
private String smsCode;
}
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;
}
}
【问题讨论】:
-
您是否尝试过使用
BindingResult.this 可能是使用这种方法的一个很好的例子。 -
尝试使用 Validated 而不是 Valid
-
还是不行
标签: java spring validation spring-mvc