本問地址:http://www.cnblogs.com/maplefighting/p/7521944.html html
地球人都知道,僅僅前臺校驗是不靠譜的,完整的校驗應該包括前端,後端和數據庫的校驗前端
支持JSR303校驗須要導入,maven倉庫搜下,用的是5.4.1,導入到pom.xml中java
而後就能夠在Employee.java中加入校驗ajax
package com.sgd.crud.bean; import javax.validation.constraints.Pattern; import org.hibernate.validator.constraints.Email; public class Employee { private Integer empId; @Pattern(regexp="(^[a-zA-Z0-9_-]{6,16}$)|(^[\u2E80-\u9FFF]{2,5})" ,message="用戶名必須是 2-5 位中文或者6-16位英文和數字、-、_、的組合") private String empName; private String gender; //@Email @Pattern(regexp="^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$", message="郵箱格式不正確") private String email; private Integer dId; //查詢員工的同時部門也查詢 private Department department; public Employee() { super(); } public Employee(Integer empId, String empName, String gender, String email, Integer dId) { super(); this.empId = empId; this.empName = empName; this.gender = gender; this.email = email; this.dId = dId; } public Department getDepartment() { return department; } public void setDepartment(Department department) { this.department = department; } public Integer getEmpId() { return empId; } public void setEmpId(Integer empId) { this.empId = empId; } public String getEmpName() { return empName; } public void setEmpName(String empName) { this.empName = empName == null ? null : empName.trim(); } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender == null ? null : gender.trim(); } public String getEmail() { return email; } public void setEmail(String email) { this.email = email == null ? null : email.trim(); } public Integer getdId() { return dId; } public void setdId(Integer dId) { this.dId = dId; } }
要使這個生效,只須要在EmployeeController的saveEmp()方法加上@valid數據庫
/** * 員工保存 * 一、支持JSR303校驗 * 導入Hibernate-Validator的包 */ @RequestMapping(value="/emp", method=RequestMethod.POST) @ResponseBody public Msg saveEmp(@Valid Employee employee,BindingResult result) { if(result.hasErrors()) { //校驗失敗,返回失敗,在模態框中顯示校驗失敗的錯誤信息 Map<String, Object> map = new HashMap<>(); List<FieldError> errors = result.getFieldErrors(); for(FieldError fieldError : errors) { //System.out.println(" 錯誤的字段名: " + fieldError.getField()); //System.out.println(" 錯誤信息: " + fieldError.getDefaultMessage()); map.put(fieldError.getField(), fieldError.getDefaultMessage()); } return Msg.fail().add("errorFields", map); }else { employeeService.saveEmp(employee); return Msg.success(); } }
在前端點擊保存ajax請求時判斷下後端
//點擊保存,保存員工 $("#emp_save_btn").click(function(){ //一、先對要提交給服務器的數據進行校驗 /*if(!validate_add_form()) { return false; } */ //判斷以前的ajax請求是否成功 if($(this).attr("ajax-va") == "error") { return false; } //一、模態框中填寫的表單數據提交給服務器進行保存 //二、發送 Ajax 請求保存員工 $.ajax({ url:"${APP_PATH}/emp", type:"POST", data:$("#empAddModal form").serialize(), success:function(result) { if(result.code == 100) { //alert(result.msg); //1. 關閉模態框 $("#empAddModal").modal("hide"); //2.來到最後一頁 //發送 ajax 顯示最後一頁的數據 to_page(totalRecord); } else { //顯示失敗信息 //console.log(result); //有哪一個字段錯誤信息就返回哪個 if(undefined != result.extend.errorFields.email) { show_validate_msg("#email_add_input", "error", result.extend.errorFields.email); } if(undefined != result.extend.errorFields.empName) { show_validate_msg("#empName_add_input", "error", result.extend.errorFields.empName); } } } }); });
數據庫也能夠加上約束服務器
這樣校驗就告一段落啦!!app