2013-07-01 46 views
0

我需要验证XML从一个供应商来并将其保存在Oracle XML类型....Spring和JSR303

现在我需要一个过程来触发验证引擎......这是要验证并且将指标中的值保存为“YES”或“NO”,例如,如果XML中的地址不存在于dB中,则地址指示器将变为“NO”[我们正在另一个过程中纠正...]

我已经在Spring 303中使用了JSR303,这是非常有效和易于使用的....但它使用了一个窗体支持对象和@valid .....

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

还是让我这么说吧 -

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

我知道它的一个非常模糊的问题......所以请让我知道如果我需要更多地解释

回答

0

大部分由JSR-303供应商进行了对象的验证工作(在大多数情况下,Hibernate验证器) 。 Spring在这个过程中的作用很小 - 它只是分析用户的数据,将其绑定到对象并将该对象传递给验证器。另外,在应用程序启动期间,Spring会创建Validator实例。

所以,你可以干涉这个过程:创建对象,手动验证,获得Validator实例并将对象传递给他。结果你会得到一个SetConstraintViolation,它表示每个字段的错误。

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

我建议阅读Hibernate验证手册的以下部分:2.2. Validating constraints它描述Validator界面和一些有用的方法:validate()validateProperty()validateValue()。这里从春天

一个好处是,你不需要将自己与Validation.buildDefaultValidatorFactory().getValidator()创建Validator:只是@Autowire它与所有其他的Spring bean:

@Autowired 
private Validator validator; 
+0

谢谢...一个问题...做你认为我应该在这里使用JSR或使用旧的Spring异常处理..... – AVI

+0

这取决于你有多少验证规则。如果你有一些规则更好使用简单的验证机制。 –