Spring和JSR303

时间:2013-07-01 15:19:40

标签: java bean-validation

我需要验证来自供应商的XML并将其保存为oracle中的XML类型....

现在我需要一个触发验证引擎的过程...如果我们的dB make中不存在XML中的地址,它将验证它并将指示器中的值保存为'YES'或'NO'示例地址指示符为“NO”[我们在另一个过程中更正...]

我已经在Spring 303中使用了JSR303,它非常有效且易于使用....但它使用了表单支持对象和@valid .....

我可以在我的设计中使用它吗?

或者让我这样说吧 -

Spring的JSR-303实现是否可以验证不是来自表单输入的对象字段?

我知道这是一个非常模糊的问题......所以如果我需要解释更多,请告诉我

1 个答案:

答案 0 :(得分:0)

JSR-303提供程序(大多数情况下为hibernate-validator)执行对象验证的大部分工作。 Spring在此过程中的角色很小 - 它只是解析用户的数据,将其绑定到对象并将此对象传递给验证器。此外,在应用程序启动期间,Spring会创建Validator实例。

所以,你可以干涉这个过程:创建对象,它将被验证,手动,获取Validator实例并将对象传递给他。因此,您将获得Set ConstraintViolation,表示每个字段的错误。

在这个方案中,主要问题是JSR-303验证器与对象一起工作,而你使用XML文档。您可以将XML文档反序列化为对象,对其进行验证,如果没有错误,则将其序列化为XML并写入数据库。

我建议阅读Hibernate Validator手册的以下部分:2.2. Validating constraints它描述了Validator界面和一些有用的方法:validate()validateProperty()和{{1} }。

Spring的一个好处是,您不需要自己使用validateValue()创建Validator:只需Validation.buildDefaultValidatorFactory().getValidator()就像所有其他Spring bean一样:

@Autowire