java输出结果校验_JSR 303 数据校验以及放入统一的返回结果

效果:在postman测试,会有默认的响应

{

"timestamp": "2020-04-21T03:53:31.757+0000",

"status": 400,

"error": "Bad Request",

"errors": [

{

"codes": [

"NotBlank.brandEntity.name",

"NotBlank.name",

"NotBlank.java.lang.String",

"NotBlank"

],

"arguments": [

{

"codes": [

"brandEntity.name",

"name"

],

"arguments": null,

"defaultMessage": "name",

"code": "name"

}

],

"defaultMessage": "品牌名必须提交",

"objectName": "brandEntity",

"field": "name",

"rejectedValue": "",

"bindingFailure": false,

"code": "NotBlank"

}

],

"message": "Validation failed for object='brandEntity'. Error count: 1",

"path": "/product/brand/save"

}

将 JSR303的校验结果封装到自己定义的统一返回结果中

对实体类注明校验字段

@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 = "logo 必须是合法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;

}

对Controller方法做处理

BindingResult 是处理的校验结果,对此分析并放入统一的返回结果里

/**

* 保存

*

* @param brand

* @param result 校验结果

* @return

*/

@RequestMapping("/save")

// @RequiresPermissions("product:brand:save")

public R save(@Valid @RequestBody BrandEntity brand, BindingResult result) {

if (result.hasErrors()) {

Map map = new HashMap<>();

// 获取校验的错误结果

result.getFieldErrors().forEach((item) -> {

// 错误提示

String message = item.getDefaultMessage();

// 错误的属性名

String field = item.getField();

map.put(field, message);

});

return R.error(400, "提交的数据不合法").put("data", map);

}

brandService.save(brand);

return R.ok();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值