gpt4 book ai didi

java - Bean 验证 XML 整个 bean

转载 作者:行者123 更新时间:2023-12-02 12:06:03 25 4
gpt4 key购买 nike

需要使用 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 验证来验证多个字段依赖关系。
例如:

  • 必须填写至少一个字段
  • 如果 field1null然后field2不是

最佳答案

请检查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 约束 - 它允许您编写一个简单的脚本检查,并且您不需要编写自己的约束来检查至少一个字段是否不为空。希望这会有所帮助。

关于java - Bean 验证 XML 整个 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46906481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com