JSR 303 校驗(yàn)注解

1.JSR 303 校驗(yàn)注解

1.給Bean添加校驗(yàn)注解javax.validation.constraints

    /**
     * 品牌名
     */
    @NotBlank(message = "品牌名必須提交")
    private String name;

2.開啟校驗(yàn)功能 @Valid

    /**
     * 保存
     */
    @RequestMapping("/save")
    public R save(@Valid @RequestBody BrandEntity brand){
        brandService.save(brand);
        return R.ok();
    }

3.給校驗(yàn)的bean后緊跟一個(gè)BindingResult,就可以獲取到校驗(yàn)的結(jié)果

    /**
     * 保存
     */
    @RequestMapping("/save")
    public R save(@Valid @RequestBody BrandEntity brand, BindingResult result){
        if (result.hasErrors()) {
            Map<String, String> map = new HashMap<>();
            // 獲取校驗(yàn)錯(cuò)誤結(jié)果
            result.getFieldErrors().forEach((item) -> {
                // 獲取錯(cuò)誤信息
                String message = item.getDefaultMessage();
                // 獲取字段名
                String field = item.getField();
                map.put(field, message);
            });
            return R.error(400, "提交的數(shù)據(jù)不合法").put("data", map);

        } else {
            brandService.save(brand);
        }

        return R.ok();
    }

2.集中處理異常

package com.agegg.gulimall.product.exception;

import com.agegg.common.exception.BizCodeEnum;
import com.agegg.common.utils.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;

/**
 * 集中處理所有異常
 */
@Slf4j
@RestControllerAdvice(basePackages = "com.agegg.gulimall.product.controller")
public class GulimallExceptionControllerAdvice {


    @ExceptionHandler(value = MethodArgumentNotValidException.class)
    public R handleVaildException(MethodArgumentNotValidException e) {
        log.error("數(shù)據(jù)效驗(yàn)出現(xiàn)問題{},異常類型{}", e.getMessage(), e.getClass());
        BindingResult result = e.getBindingResult();
        Map<String, String> map = new HashMap<>();
        // 獲取校驗(yàn)錯(cuò)誤結(jié)果
        result.getFieldErrors().forEach((item) -> {
            // 獲取錯(cuò)誤信息
            String message = item.getDefaultMessage();
            // 獲取字段名
            String field = item.getField();
            map.put(field, message);
        });

        return R.error(BizCodeEnum.VAILD_EXCEPTION.getCode(), BizCodeEnum.VAILD_EXCEPTION.getMessage()).put("data", map);
    }

    @ExceptionHandler(value = Throwable.class)
    public R handleException(Throwable throwable) {
        log.error("出現(xiàn)問題{},異常類型{}", throwable.getMessage(), throwable.getClass());
        return R.error(BizCodeEnum.UNKNOW_EXCEPTION.getCode(), BizCodeEnum.UNKNOW_EXCEPTION.getMessage());
    }

}

3. 分組校驗(yàn)

4.自定義校驗(yàn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市忘衍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吧黄,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,681評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稳摄,死亡現(xiàn)場(chǎng)離奇詭異稚字,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)厦酬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門胆描,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人仗阅,你說我怎么就攤上這事昌讲。” “怎么了减噪?”我有些...
    開封第一講書人閱讀 169,421評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵短绸,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我筹裕,道長(zhǎng)醋闭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,114評(píng)論 1 300
  • 正文 為了忘掉前任朝卒,我火速辦了婚禮证逻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘抗斤。我一直安慰自己囚企,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評(píng)論 6 398
  • 文/花漫 我一把揭開白布瑞眼。 她就那樣靜靜地躺著龙宏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪伤疙。 梳的紋絲不亂的頭發(fā)上银酗,一...
    開封第一講書人閱讀 52,713評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音徒像,去河邊找鬼花吟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛厨姚,可吹牛的內(nèi)容都是我干的衅澈。 我是一名探鬼主播,決...
    沈念sama閱讀 41,170評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼谬墙,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼今布!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拭抬,我...
    開封第一講書人閱讀 40,116評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤部默,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后造虎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體傅蹂,經(jīng)...
    沈念sama閱讀 46,651評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了份蝴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片犁功。...
    茶點(diǎn)故事閱讀 40,865評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖婚夫,靈堂內(nèi)的尸體忽然破棺而出浸卦,到底是詐尸還是另有隱情,我是刑警寧澤案糙,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布限嫌,位于F島的核電站,受9級(jí)特大地震影響时捌,放射性物質(zhì)發(fā)生泄漏怒医。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評(píng)論 3 336
  • 文/蒙蒙 一奢讨、第九天 我趴在偏房一處隱蔽的房頂上張望稚叹。 院中可真熱鬧,春花似錦禽笑、人聲如沸入录。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽僚稿。三九已至,卻和暖如春蟀伸,著一層夾襖步出監(jiān)牢的瞬間蚀同,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工啊掏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蠢络,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,299評(píng)論 3 379
  • 正文 我出身青樓迟蜜,卻偏偏與公主長(zhǎng)得像刹孔,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子娜睛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容