使用Javax或Hibernate验证集合的自定义验证

时间:2018-10-22 11:58:50

标签: java spring validation bean-validation hibernate-validator

我正在使用 validation-api-1.1.0.Final hibernate-validator-5.3.6.Final 。我想对以下情况进行验证,

从客户端收到的信息,

<CardHeader>

在数据库中指定验证规则,如下所示,

"BookInfo":[  
            {  
               "key":"book.name",
               "value":"D12345678"
            },
            {  
               "key":"author.phoneNumber",
               "value":{  
                  "phone_number":"0123456789",
                  "numberInfo":{  
                     "contryCode":"44",
                     "numberRegion":"GB",
                     "numberType":"MOBILE"
                  }
               }
            },
            {  
               "key":"author.email",
               "value":"a@b.com"
            }
         ]

我想根据数据库中存储的规则以及我们从客户端收到的有效负载执行验证。我想使用上述2个库来执行这些验证。我将上述2条信息存储在如下所示的JAVA bean中

BookClient.java

 "BookInfo":[  
                     {  
                        "key":"name",
                        "type": "text"
                        "Validation":{  
                           "pattern":"[a-z,A-Z]"
                        }
                     },
                     {  
                        "key":"author.phoneNumber",
                        "type": "tel" //It should perform custom validation i have written for phone number validation
                        "localValidation":{  
                        }
                     },
                     {  
                        "key":"author.email",
                        "type":"email",
                        "localValidation":{
                        "pattern": "[*@gmail.com]" //It should perform javax email validation+pattern mentioned here
                        },
                        "optional":false
                     }
                  ]

BookFromDB.java

public Class BookClient {
  private List<Map<String, Object>> bookInfo;
}

我已经浏览了足够多的内容,但无法获得将对List进行验证的任何线程。如果我得到任何提示或任何其他替代方法来有效执行此验证,那就太好了。

任何帮助都是可取的。

1 个答案:

答案 0 :(得分:0)

Hibernate Validator暂时不支持自由格式对象的验证。

这是我们(主要是Marko Bekhta)为6.1所做的工作,尤其是为了能够验证JSON对象。

不过请不要屏住呼吸,我们没有发布的估计日期。