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; }
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(); }