本问地址: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