SSM整合-JSR303校验

重要数据(用JSR303校验)
要支持JSR303,要导入hibernate-validator jar包

<!--支持JSR303数据校验的jar包-->
        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>6.0.10.Final</version>
        </dependency>

然后给要校验的对象中要校验的属性添加要求就可以了:
message是返回的错误信息,regexp是正则表达式

    @Pattern(regexp = "^[\\u4E00-\\u9FA5A-Za-z0-9]{3,10}$",message = "" +
            "名字必须是3~10位中文,英文,数字")
    private String empName;

    private String gender;

    @Pattern(regexp = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"
    ,message = "邮箱格式不正确")
    private String email;

然后在Controller中为封装好的要校验的对象前面添加@Valid注解,代表里面的对象的数据要进行校验

/**
     *新增员工的方法
     *因为传过来的表单数据的key(就是你表单input中设置的name值)值和Employee中的属性一样,所以可以自动封装
     */
    @RequestMapping(value = "/addemp",method = RequestMethod.POST)
    @ResponseBody
    //@Valid: 代表里面的对象的数据要进行校验
    //BindingResult result:存放校验结果
    public Msg addemp(@Valid Employee employee, BindingResult result){
        if (result.hasErrors()){
            //校验失败,返回错误信息并在模态框中显示
            Map<String,Object> map = new HashMap<>();
            List<FieldError> fieldErrors = result.getFieldErrors();
            for (FieldError fieldError : fieldErrors) {
                map.put(fieldError.getField(),fieldError.getDefaultMessage());
            }
            return Msg.fail().add("errorFields",map);
        }else {
            employeeService.addemp(employee);
            return Msg.success();
        }
    }

然后回到index页面中点击保存员工的保存按钮中修改,之前是直接关闭模态框,现在判断有哪个字段的错误信息就显示哪个字段的错误信息出来

 //模态框中保存按钮的点击事件
    $("#emp_save_btn").click(function () {
        //校验表单数据是否合法
        if (!emps_add_jiaoyan()) {
            return false;
        }
        //判断之前的ajax用户名校验是否成功
        if ($(this).attr("ajax-va") == "error") {
            return false;
        }
        //利用jQuery提供的方法序列化表单中的员工信息,序列化后的数据如下:
        //empName=nyh&email=nyh%40qq.com&gender=M&dId=2
        //发送ajax请求保存员工
        $.ajax({
            url:"${APP_PATH}/emp",
            type:"POST",
            data:$("#empAddModal form").serialize(),
            success:function(result){
                //alert(result.msg);
                if(result.code == 100){
                    //员工保存成功;
                    //1、关闭模态框
                    $("#empAddModal").modal('hide');

                    //2、来到最后一页,显示刚才保存的数据
                    //发送ajax请求显示最后一页数据即可
                    to_page(total);
                }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);
                    }
                }
            }
        });
    });

测试,把前端的表单校验注释掉:
这里写图片描述

然后填写错误的邮箱点击保存:

这里写图片描述
提示信息出来,证明成功了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值