ssm项目之JSR303后台校验

本问地址:http://www.cnblogs.com/maplefighting/p/7521944.html 

地球人都知道,仅仅前台校验是不靠谱的,完整的校验应该包括前端,后端和数据库的校验

支持JSR303校验需要导入,maven仓库搜下,用的是5.4.1,导入到pom.xml中

然后就可以在Employee.java中加入校验

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

/**
     * 员工保存
     * 1、支持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(){
        //1、先对要提交给服务器的数据进行校验
         /*if(!validate_add_form()) {
            return false;
        } */
        //判断之前的ajax请求是否成功
         if($(this).attr("ajax-va") == "error") {
                return false;
        }

        //1、模态框中填写的表单数据提交给服务器进行保存
        //2、发送 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

数据库也可以加上约束

这样校验就告一段落啦!!

转载于:https://www.cnblogs.com/maplefighting/p/7521944.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值