参数验证是必不可少的一个步骤,一般都会使用validate(TP框架下) validated(spring boot框架下)进行验证。 有这样的一个业务场景,在更新的时候我们需要验证id(主键)为必填字段,而在新增的时候则不需要验证,此时就需要场景来进行区分。 作为一位PHPer,对场景这块很熟悉,跑到spring boot下就蒙蔽了 到处某度后,终于找到了,现说明如下: 原始写法:
控制器:
//新增用户
public UserModel(@Validated({UserInsertService.class}))
//更新用户
public Integer (@Validated({UserUpdateService.class}))
模型:
@NotNull(message=”id不能为空”,groups={UserUpdateService.class})
Integet id;
@NotEmpty(message=”昵称不能为空”,groups={UserInsertService.class,UserUpdateService.class})
缺点:安装这种写法每一个控制器的方法都需要编写对应的service方法,不符合实际情况 新写法:
控制器:
//新增用户
public UserModel(@Validated({UserModel.Insert.class}))
//更新用户
public Integer (@Validated({UserModel.Update.class}))
模型:
//直接在模型中定义interface,也就是所谓的场景,然后在控制器调用的时候追加对应的场景值即可
public interface Insert{}
public interface Update{}
@NotNull(message=”id不能为空”,groups={UserModel.Update.class})
Integet id;
@NotEmpty(message=”昵称不能为空”,groups={UserModel.Insert.class,UserModel.Update.class})
按照以上写法可解决多个方法需编写多个service的问题
如果还有什么不明白的地方,欢迎加我QQ进行咨询,请注明技术咨询 本人QQ:980569038 TP集成支付宝群:594955172 ? 若该文章对您有一定帮助,欢迎打赏
(点击图片可放大)
本人原创,转载请注明出处