JSR 303検査——hibernate-validator実現
2321 ワード
本稿はSpring+SpringMVC+Mybatisプロジェクトであるが、JSR 303検証ではHibernateが提供する実装を用いている.
1.Mavenに参加する
1.Mavenに参加する
org.hibernate
hibernate-validator
5.4.1.Final
2. 検証するエンティティークラスに検証ルールを追加public class Employee {
private Integer empId;
@Pattern(regexp=("(^[a-zA-Z0-9_-]{6,16}$)|(^[\\u2E80-\\u9FFF]{2,5}$)"),message=" ")
private String empName;
private String gender;
@Pattern(regexp=("^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$"),message=" !")
private String email;
private Integer dId;
}
3. メソッドに@Valid注記と「BindingResult result」を追加して検証結果を受信し、検証結果をフロントエンド表示に戻せばよい./**
*
* 1. JSR303
* 2. Hibernate-validator
*/
@RequestMapping(value="/emp",method=RequestMethod.POST)
@ResponseBody
public Msg saveEmp(@Valid Employee employee,BindingResult result){
if(result.hasErrors()){
// , ,
List errors = result.getFieldErrors();
Map map = new HashMap();
for(FieldError fieldError : errors){
System.out.println(" :"+fieldError.getField());
System.out.println(" :"+fieldError.getDefaultMessage());
map.put(fieldError.getField(), fieldError.getDefaultMessage());
}
return Msg.fail().add("errorField", map);
}else{
employeeService.saveEmp(employee);
return Msg.success();
}
}
4. フロントエンド表示//2.
$.ajax({
url:"${ctx}/emp",
type:"POST",
data:$("#empAddModal form").serialize(),
success:function(data){
if(data.code==100){
//1.
$("#empAddModal").modal("hide");
//2.
to_page(9999);
}else{
//
//
if(undefined != data.extend.errorField.email){
//
show_validate_msg("#email_add_input","error",data.extend.errorField.email);
}
if(undefined != data.extend.errorField.empName){
show_validate_msg("#empName_add_input","error",data.extend.errorField.empName);
}
}
},
error:function(data){
}
});