使用validator框架来validate bean

在数据传递,尤其当你准备好发送一个请求到其他系统前,对于bean的取值做必要的校验是十分重要的。

对于一些简单的字段,JSR已经提供了一些annotation比如@NotNull , @NotEmpty来完成,我们这里主要来讨论比较复杂的校验:

需求:

假设我们在数据模型AppInfo中有一个字段叫Tenant,这个tenant是个字符串类型,并且它的取值只可能是{"US","Brazil","ASDA","Canada","Multi-tenant"} ,那么我们如何校验这个数据模型呢?

解决方法:

很简单,首先我们自定义一个Validator类来封装校验逻辑,它要求我们实现isValid()方法:

其次,我们定义一个注解接口 @Tenant,并且让这个注解接口使用我们刚才定义的Validator类作为其校验类,我们这类是可以标注在字段或者方法上的。

现在我们在目标数据模型中相应的字段上使用我们开发的标注就可以了,见27-28行:

现在我们来编写校验方法,我们在业务方法createAppInfo()中加入以下代码,这样在创建数据模型时会完成我们的校验逻辑:

从38行开始就会让校验框架来进行校验,我们首先获得ValidatorFactory,然后获得Validator对象(这是jsr的validator),美国空间,然后从第41行开始校验,并且把校验的违背结果放入violations集合对象中,如果集合对象size()为0 ,那么就说明数据模型没有违背的地方,所以正常创建数据模型,否则,从46行开始,我们把所有违背的地方全部罗列出来,并且写入日志。

实验:

如果用户在前端对于tenant字段传递的不是我们所要的合法tenant值,比如"tenant1":

最终,日志就可以看出,吧这行非法内容检查了出来:

本文出自 “平行线的凝聚” 博客,香港空间,网站空间,请务必保留此出处

我想有一天和你去旅行。去那没有去过的地方,

使用validator框架来validate bean

相关文章:

你感兴趣的文章:

标签云: