0

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

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

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

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

或者让我这样说——

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

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

4

1 回答 1

0

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

因此,您可以干预此过程:创建对象,手动验证该对象,获取Validator实例并将对象传递给他。结果,您将得到一个Set代表ConstraintViolation每个字段的错误。

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

我建议阅读 Hibernate Validator 手册的以下部分:2.2。验证约束它描述Validator了接口和一些有用的方法validate()validateProperty()validateValue()

这里 Spring 的一个好处是您不需要Validator自己创建Validation.buildDefaultValidatorFactory().getValidator(): 就像@Autowire 所有其他 Spring bean 一样:

@Autowired
private Validator validator;
于 2013-07-01T16:09:39.820 回答