使用krasa-jaxb-tools jaxb-plugin,我生成了以下内容:
来自XSD架构:
<xs:simpleType name="SomethingId">
<xs:restriction base="xs:string">
<xs:pattern value="small\.123[A-Za-z0-9\.]{0,27}"/>
<xs:pattern value="SMALL\.123[A-Za-z0-9\.]{0,27}"/>
</xs:restriction>
</xs:simpleType>
我得到了注释元素:
@XmlElement(name = "SomethingId", required = true)
@NotNull
@Pattern.List({
@Pattern(regexp = "small\\.123[A-Za-z0-9\\.]{0,27}"),
@Pattern(regexp = "SMALL\\.123[A-Za-z0-9\\.]{0,27}")
})
protected String somethingId;
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
this.validator = factory.getValidator();
使用JAXB,我成功地生成了有效的XML(它通过了XSD验证--包括上面提到的字符串的格式)。
但是,如果我尝试使用Bean验证验证上面提到的字符串,它会抛出错误--如果它被写为“small123”,它会说它应该大写(失败small.123[a-za-z0-9.]{0,27}regex),反之亦然。
结论是XSD验证将模式列表视为隐含了逻辑OR,而bean验证将它们视为逻辑and。
由于这个事件在我的代码中只发生过一次,所以我设法修复了它(又快又脏),但我在想是否有更好的方法。
这是插件(生成错误注释)、验证器还是其他(我没有注意到)的问题吗?
是的。问题出在插件上。
请参阅https://github.com/krasa/krasa-jaxb-tools/issues/41(在1.5中修正并合并)和https://github.com/krasa/krasa-jaxb-tools/issues/54
如果您没有使用1.5,也许更新可以修复您的问题。在其他情况下,您必须等待合并和发布问题54或应用此修复在您的本地回购。
我有以下场景:我正在尝试处理一个表单,模型属性是一个具有String和Long属性的bean。众所周知,bean验证提供了很多注释来帮助我们确定数据的有效性。我面临的是,对于Long属性的情况,我只能使用@NotNull和另一个注释(我不记得它的名字)来强制用户输入正数。如果用户输入例如“sdf”,应用程序会抛出一个BIG异常。所以我想知道的是,如果用户在爆炸前输入了一个数字(因为我不能使用@Pa
我是一个新手,我正在使用java bean验证。 我有一个java bean类,如下所示,带有null和size约束。 我的主要课程如下 当我传递长度小于4的名称时,这将引发错误。但是对于我传递的所有值,这个类都成功地执行了。让我知道我错过了什么。 提前谢谢。
我有以下xml: 我在网上验证了xml,它的格式很好。接下来我做了架构: 当我尝试在线验证时,会出现以下错误:http://www.utilities-online.info/xsdvalidation/?save=72595340-b1e9-4061-a655-c6cfb9cdac44-XSD验证#。USIxpqw1pi点击按钮根据xsd验证xml并查看所有错误。有人知道如何毫无差错地解决这个问
我在验证xml和xsd时遇到问题。我从xsd模式中得到这个错误。 src解决方案。4.2:解析组件“urn:id”时出错。检测到“urn:id”位于命名空间“urn:schemas microsoft com:xml-diffgram-v1”中,但此命名空间中的组件无法从架构文档中引用virtual://server/schema.xsd。如果名称空间不正确,可能需要更改“urn:id”的前缀。如
问题内容: 我需要使用给定的XSD文件验证XML文件。我只需要如果验证正常就返回true,否则返回false的方法。 问题答案: 仅返回true或false(也不需要任何外部库):
问题内容: 我有一个已导入xsd的wsdl,此xsd具有类似如下的限制: 因此,我想细想一下,当我通过netbeans将这个耳朵部署到glassfish上时,将对传入的数据进行验证,但事实并非如此。在将数据传递给我的@WebService对象并转换为Java对象之前,是否需要进行任何调用以确保数据经过验证。 问题答案: 使用SchemaValidation批注。 请注意,它仅适用于文档/文字样式的