穀粒商城學習——P66 JSR303校驗
阿新 • • 發佈:2021-06-30
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;View Codeimport 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; }
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