我必需使用XML进行bean验证。
我们可以通过在类声明之前放置注释来验证整个类。
@AtLeastOneNotNull
public class SampleBean {
// ...
}
然后使用反射循环遍历字段。
如何使用XML bean验证实现相同的功能?
<constraint-mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.0.xsd" xmlns="http://jboss.org/xml/ns/javax/validation/mapping">
<default-package>my.package</default-package>
<bean class="SampleBean">
<!-- ? -->
</bean>
</constraint-mappings>
我可以在<bean>
<field>
之后声明。
我的目标是使用XML bean验证来验证多个字段依赖项 例如:
field1
为null
,则field2
不是答案 0 :(得分:1)
请查看documentation以获取Bean Validation 2.0(如果您仍然使用旧版本 - 这里是相同的link到1.0版本)示例9.2显示了您的需求:
<?xml version="1.0" encoding="UTF-8"?>
<constraint-mappings
xmlns="http://xmlns.jcp.org/xml/ns/validation/mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/validation/mapping
http://xmlns.jcp.org/xml/ns/validation/mapping/validation-mapping-2.0.xsd"
version="2.0">
<default-package>com.acme.app.domain</default-package>
<bean class="Customer" ignore-annotations="false">
<class ignore-annotations="true">
[...]
</class>
</bean>
</constraint-mappings>
所以要回答你的问题,你应该能够:
<bean class="SampleBean" ignore-annotations="false">
<class ignore-annotations="true">
[...]
</class>
</bean>
并定义您的约束。此外,如果您正在使用Hibernate Validator,您可能希望查看ScripAssert约束 - 它将允许您编写一个简单的脚本检查,并且您不需要编写自己的约束来检查至少一个字段是否为空。希望这会有所帮助。