ssm項目之JSR303後臺校驗

本問地址: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;
    }
}
View Code

要使這個生效,只須要在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();
        }
    }
View Code

在前端點擊保存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);
                    }
                }

            }
        });
    });
View Code

數據庫也能夠加上約束服務器

這樣校驗就告一段落啦!!app

相關文章
相關標籤/搜索