请求参数验证(1)-javax.validation
一、pom加入如下配置
<dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.1.0.Final</version> </dependency>
二、加注解
@RestController public class TokenController { @InitBinder public void initBinder(DataBinder binder){ binder.setValidator(new TokenValidator()); } @RequestMapping("/token") public String token(@ModelAttribute @Valid TokenCommand tokenCommand, BindingResult bindingResult){ if(bindingResult.hasErrors()){ StringBuffer stringBuffer = new StringBuffer(); for (ObjectError objectError : bindingResult.getAllErrors()) { stringBuffer.append(objectError.getCode()); } return String.valueOf(stringBuffer); } return tokenCommand.getAppId(); } }
在请求参数前面加入@Valid,后面跟上BindingResult
BindResult result必须紧跟着前面的@ModelAttribute, 否则会出错
方法上面加
@InitBinder public void initBinder(DataBinder binder){ binder.setValidator(new TokenValidator()); }
三、写验证类
1 public class TokenValidator implements Validator { 2 @Override 3 public boolean supports(Class<?> aClass) { 4 return aClass.equals(TokenCommand.class); 5 } 6 7 //supports返回true执行 8 @Override 9 public void validate(Object o, Errors errors) { 10 TokenCommand tokenCommand = (TokenCommand) o; 11 if (tokenCommand.getAppId() == null || tokenCommand.getAppKey() == null) { 12 errors.reject("appid and appkey can not be null"); 13 } 14 if(tokenCommand.getAppId().length() < 6){ 15 errors.reject("appid length less than 6"); 16 } 17 if(tokenCommand.getAppKey().length() < 6){ 18 errors.reject("appkey length less than 6"); 19 } 20 } 21 }
类要实现Validator,引入的是sring包的。
supprots返回true的情况下执行validate
’