spring boot validated场景验证

参数验证是必不可少的一个步骤,一般都会使用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 ? 若该文章对您有一定帮助,欢迎打赏

(点击图片可放大)

 

本人原创,转载请注明出处