当提交表单时,前台js会做一些验证,某些情况下后台验证也是必不可少的。
今天实现了一个JSR-303规范的数据验证。
使用jar包:hibernate-validator-4.3.0.Final.jar,validation-api-1.0.0.GA.jar(http://pan.baidu.com/s/1ntHwtuh)
model:
package cn.cxf.com.controller;
import org.hibernate.validator.constraints.NotBlank;
/**
* @author 崔雪峰
* @date 2015-6-16
* 备注:
*/
public class User {
@NotBlank(message="用户名不能为空")
private String username;
@NotBlank(message="性别不能为空")
private String sex;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
action:
@RequestMapping(value="index2.do",method=RequestMethod.POST)
@ResponseBody
public JSONObject index2(@Valid User user,BindingResult result,HttpServletRequest request) {
if (result.hasErrors()){
List<ObjectError> errorList = result.getAllErrors();
for(ObjectError error : errorList){
System.out.println(error.getCode()+error.getDefaultMessage());
}
}
JSONObject ret=new JSONObject();
ret.put("cuixuefeng", "25岁");
return ret;
}
注意:BindingResult result一定要跟在@Valid的对象后面,如果不需要验证则去掉@Valid注解和 BindingResult result。