1. 程式人生 > 其它 >穀粒商城學習——P66 JSR303校驗

穀粒商城學習——P66 JSR303校驗

1,給Bean新增校驗註解

  javax.validation.constraints.*,並定義自己的message(可省略,有預設的校驗錯誤資訊)

package com.atguigu.gulimall.product.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serializable;
import lombok.Data;
import org.hibernate.validator.constraints.URL;

import javax.validation.constraints.*; /** * 品牌 * * @author zyn */ @Data @TableName("pms_brand") public class BrandEntity implements Serializable { private static final long serialVersionUID = 1L; /** * 品牌id */ @TableId private Long brandId; /** * 品牌名 */ @NotBlank(message
= "品牌名不能為空") private String name; /** * 品牌logo地址 */ @NotEmpty @URL(message = "url必須是合法的url地址") private String logo; /** * 介紹 */ private String descript; /** * 顯示狀態[0-不顯示;1-顯示] */ private Integer showStatus; /** * 檢索首字母 */ @NotEmpty @Pattern(regexp
= "^[a-zA-Z]",message = "檢索首字母必須是一個字母") private String firstLetter; /** * 排序 */ @NotNull @Min(value =0,message = "排序必須大於等於0") private Integer sort; }
View Code

2,使用@Valid開啟校驗

  效果:校驗錯誤後會自動響應上面定義的message

3,給校驗的bean後緊跟一個org.springframework.validation.BindingResult,就可以獲取到校驗的結果

    @RequestMapping("/save")
   // @RequiresPermissions("product:brand:save")
    public R save(@Valid @RequestBody BrandEntity brand, BindingResult result){
        if(result.hasErrors()){
            Map<String,String> map = new HashMap<>();
            result.getFieldErrors().forEach(x->{
                map.put(x.getField(),x.getDefaultMessage());
            });
            return R.error(400,"提交的資料不合法").put("data",map);
        }
        brandService.save(brand);

        return R.ok();
    }
View Code

postman測試及效果: