vue+springboot練手demo(五)——校驗功能

目錄

vue+springboot練手demo(一)——環(huán)境搭建
vue+springboot練手demo(二)——查詢功能的實現(xiàn)
vue+springboot練手demo(三)——刪除功能的實現(xiàn)
vue+springboot練手demo(四)——新增和修改功能的實現(xiàn)
vue+springboot練手demo(五)——校驗功能
vue+springboot練手demo(六)——Swagger掺涛、Druid監(jiān)控和日志

校驗功能

前端使用vue中自帶的表單驗證功能和正則表達式一起使用跷究;后端使用validation注解配合正則表達式進行校驗胎撤。后端校驗較為簡單默穴,因此先從后端校驗開始挖炬。

后端校驗

導(dǎo)入依賴

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

修改Emps實體類支鸡,需要為姓名镰官、郵箱、性別碌尔、手機號和出生日期設(shè)置簡單驗證浇辜。

    @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:內(nèi)嵌正則表達式驗證,regexp中為正則表達式
  • @Email:電子郵箱規(guī)則
    修改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官網(wǎng)中表單驗證的模塊卑雁。代碼如下

#首先在模態(tài)框中的<el-form>標簽對中添加:rules募书,后面代表著是制定校驗的規(guī)則
:rules="EmpRules"
#第二步在data(){}下中的return{}中實現(xiàn)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(){}下實現(xiàn)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"琉挖。隨后在方法中實現(xiàn)pickerOptions启泣。
pickerOptions: {
  disabledDate(time) {
    let _now = Date.now();
    return time.getTime() > _now;
  }
}
#至此校驗的功能就全部實現(xiàn)了,由于校驗會出現(xiàn)校驗成功和失敗的兩種情況示辈,因此模態(tài)框中的提交按鈕的方法就需要修改了寥茫。
      EmpInfoBtn() {
        this.$refs['EmpForm'].validate((valid) => {
          if (valid) {
            if (!this.editname){
              this.$http.post("/Emps/Emps",this.EmpForm).then(result => {
                //模態(tài)框關(guān)閉
                this.EmpDialog = false;
                //提示信息
                if (result.data.code==100){
                  this.$message({
                    message: '添加成功!',
                    type: 'success'
                  });
                }else
                {
                  this.$message({
                    message: '添加失敺椤纱耻!',
                    type: 'error'
                  });
                }
                //重新加載數(shù)據(jù)
                this.findPage(this.endpage);
              });
            }else {
              //由于部門信息可能不會被修改芭梯,而原始的部門信息不是id值而是name值,所以這里要做一個判斷弄喘。當id值不為數(shù)字時使其賦值為員工信息中部門信息的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 => {
                //模態(tài)框關(guān)閉
                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就完成了卖漫!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末费尽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子羊始,更是在濱河造成了極大的恐慌旱幼,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件突委,死亡現(xiàn)場離奇詭異柏卤,居然都是意外死亡,警方通過查閱死者的電腦和手機匀油,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門缘缚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人敌蚜,你說我怎么就攤上這事桥滨。” “怎么了弛车?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵齐媒,是天一觀的道長。 經(jīng)常有香客問我纷跛,道長喻括,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任贫奠,我火速辦了婚禮唬血,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘叮阅。我一直安慰自己刁品,他們只是感情好,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布浩姥。 她就那樣靜靜地躺著挑随,像睡著了一般。 火紅的嫁衣襯著肌膚如雪勒叠。 梳的紋絲不亂的頭發(fā)上兜挨,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天膏孟,我揣著相機與錄音,去河邊找鬼拌汇。 笑死柒桑,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的噪舀。 我是一名探鬼主播魁淳,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼与倡!你這毒婦竟也來了界逛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤纺座,失蹤者是張志新(化名)和其女友劉穎息拜,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體净响,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡少欺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了馋贤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赞别。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖掸掸,靈堂內(nèi)的尸體忽然破棺而出氯庆,到底是詐尸還是另有隱情,我是刑警寧澤扰付,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站仁讨,受9級特大地震影響羽莺,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜洞豁,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一盐固、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧丈挟,春花似錦刁卜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至例朱,卻和暖如春孝情,著一層夾襖步出監(jiān)牢的瞬間鱼蝉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工箫荡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留魁亦,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓羔挡,卻偏偏與公主長得像洁奈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子绞灼,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355