问题
i send a POST request of "application/json" type with 「postman」,set the param "phone" to empty string, normally it should print error for annotation "@NotEmpty", however, it didn't print anything and work well.
controller:
@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);
}
Model:
@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;
}
}
回答1:
You are probably missing the dependencies.
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
Also, make sure you import NotNull
correctly.
import javax.validation.constraints.NotNull;
回答2:
Am, I am still new in Spring. But here is an answer for my situation if it suits you.
To make @Valid work you should include two packages javax validation-api and hibernate-validator, but I only included validation-api.
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.1.Final</version>
</dependency>
来源:https://stackoverflow.com/questions/43436804/spring-valid-doesnt-work