vue+springboot练手demo(五)——校验功能

目录

vue+springboot练手demo(一)——环境搭建
vue+springboot练手demo(二)——查询功能的实现
vue+springboot练手demo(三)——删除功能的实现
vue+springboot练手demo(四)——新增和修改功能的实现
vue+springboot练手demo(五)——校验功能
vue+springboot练手demo(六)——Swagger、Druid监控和日志

校验功能

前端使用vue中自带的表单验证功能和正则表达式一起使用;后端使用validation注解配合正则表达式进行校验。后端校验较为简单,因此先从后端校验开始。

后端校验

导入依赖

  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
  </dependency>

修改Emps实体类,需要为姓名、邮箱、性别、手机号和出生日期设置简单验证。

    @NotNull(message = "姓名不能为空")
    @Pattern(regexp = "^[\\u4e00-\\u9fa5]{2,6}$")
    private String eName;
    @Email
    private String eEmail;
    @NotNull(message = "性别不能为空")
    private String eSex;
    @NotNull(message = "手机号不能为空")
    @Pattern(regexp = "^1[3-9]\\d{9}$")
    private String ePhone;
    @NotNull(message = "出生日期不能为空")
    private String eDate;

注解说明:

  • @NotNull:不能为空
  • @Pattern:内嵌正则表达式验证,regexp中为正则表达式
  • @Email:电子邮箱规则
    修改EmpsController中的添加和修改方法,添加@Valid注解开启验证,使用BindingResult返回异常信息
    @PostMapping("Emps")
    public Msg AddEmp(@Valid @RequestBody Emps emps, BindingResult bindingResult){
        if (bindingResult.hasErrors()){
            for (FieldError fieldError : bindingResult.getFieldErrors()) {
                System.out.println(fieldError.getField()+":"+fieldError.getDefaultMessage());
            }
            return Msg.fail();
        }else {
            return Msg.success();
        }
    }
    @PutMapping("Emps")
    public Msg UpdateEmp(@Valid @RequestBody Emps emps, BindingResult bindingResult){
        if (bindingResult.hasErrors()){
            for (FieldError fieldError : bindingResult.getFieldErrors()) {
                System.out.println(fieldError.getField()+":"+fieldError.getDefaultMessage());
            }
            return Msg.fail();
        }else {
            empsService.UpdateById(emps);
            return Msg.success();
        }
    }

测试,添加操作和修改操作类似,因此这里只测试了添加操作的。


5-1 添加异常信息.png

5-2 异常信息.png
5-3 添加正确信息.png

5-4 添加成功.png

前端校验

前端校验参考element-ui官网中表单验证的模块。代码如下

#首先在模态框中的<el-form>标签对中添加:rules,后面代表着是制定校验的规则
:rules="EmpRules"
#第二步在data(){}下中的return{}中实现EmpRules
EmpRules: {
  eName: [{required: true, validator: checkName, trigger: 'blur'}],
  eEmail: [{required: true, validator: checkEmail, trigger: 'blur'}],
  ePhone: [{required: true, validator: checkPhone, trigger: 'blur'}],
  eDate: [{required: true, message: '请选择出生日期', trigger: 'change'}],
  eSex: [{required: true, message: '请选择性别', trigger: 'change'}],
  dId: [{required: true, message: '请选择部门', trigger: 'change'}],
}
#第三步在data(){}下实现checkName、checkEmail和checkPhone,
      var checkName = (rule, value, callback) => {
        rule = /^[\u4e00-\u9fa5]{2,6}$/;
        if (!value) {
          callback(new Error('姓名不能为空'));
        } else {
          if (!rule.test(value)) {
            callback(new Error('输入的姓名需为2-6个汉字!'));
          } else {
            callback();
          }
        }
      };
      var checkEmail = (rule, value, callback) => {
        rule = /^\w{3,12}@\w{1,5}\.[a-z]{2,3}$/;
        if (!value) {
          callback(new Error('邮箱不能为空'));
        } else {
          if (!rule.test(value)) {
            callback(new Error('输入的邮箱格式有误!'));
          } else {
            callback();
          }
        }
      };
      var checkPhone = (rule, value, callback) => {
        rule = /^1[3-9]\d{9}$/;
        if (!value) {
          callback(new Error('手机号不能为空'));
        } else {
          if (!rule.test(value)) {
            callback(new Error('输入的手机号格式有误!'));
          } else {
            callback();
          }
        }
      };
#最后一步,为日期选择器添加校验。首先在<el-date-picker>标签对最后添加:picker-options="pickerOptions"。随后在方法中实现pickerOptions。
pickerOptions: {
  disabledDate(time) {
    let _now = Date.now();
    return time.getTime() > _now;
  }
}
#至此校验的功能就全部实现了,由于校验会出现校验成功和失败的两种情况,因此模态框中的提交按钮的方法就需要修改了。
      EmpInfoBtn() {
        this.$refs['EmpForm'].validate((valid) => {
          if (valid) {
            if (!this.editname){
              this.$http.post("/Emps/Emps",this.EmpForm).then(result => {
                //模态框关闭
                this.EmpDialog = false;
                //提示信息
                if (result.data.code==100){
                  this.$message({
                    message: '添加成功!',
                    type: 'success'
                  });
                }else
                {
                  this.$message({
                    message: '添加失败!',
                    type: 'error'
                  });
                }
                //重新加载数据
                this.findPage(this.endpage);
              });
            }else {
              //由于部门信息可能不会被修改,而原始的部门信息不是id值而是name值,所以这里要做一个判断。当id值不为数字时使其赋值为员工信息中部门信息的id值
              if(isNaN(this.EmpForm.dId)){
                this.EmpForm.dId=this.EmpForm.deptList[0].dId;
                console.log(this.EmpForm.dId)
              }
              this.$http.put("/Emps/Emps",this.EmpForm).then(result => {
                //模态框关闭
                this.EmpDialog = false;
                //提示信息
                if (result.data.code==100){
                  this.$message({
                    message: '修改成功!',
                    type: 'success'
                  });
                }else
                {
                  this.$message({
                    message: '修改失败!',
                    type: 'error'
                  });
                }
                this.findPage(this.currentpage);
              });
            }
          } else {
            return false;
          }
        });
      },

测试

6-1 添加校验.png

6-2 修改校验.png

6-3 日期校验.png

至于校验成功的测试我就不测试了,和前一章的效果一样。至此基本的CRUD就完成了!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272