Jaxb 为什么这个XSD元素要通过默认的ValidationEventHandler?
我使用CXF(2.7.1)和WSDL&XSD实现了一个工作的web服务,其中包括以下类型:Jaxb 为什么这个XSD元素要通过默认的ValidationEventHandler?,jaxb,xsd,wsdl,cxf,xsd-validation,Jaxb,Xsd,Wsdl,Cxf,Xsd Validation,我使用CXF(2.7.1)和WSDL&XSD实现了一个工作的web服务,其中包括以下类型: <xs:simpleType name="SimpleIdType"> <xs:restriction base="xs:string"> <xs:pattern value="[A-Za-z0-9:\.\-]{20}"/> </xs:restriction> </xs:simpleType> 我的解释是:只接受20个只包含
<xs:simpleType name="SimpleIdType">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Za-z0-9:\.\-]{20}"/>
</xs:restriction>
</xs:simpleType>
我的解释是:只接受20个只包含字母数字字符和“:”、“.”和“-”的字符串
当我使用包含faaaaaaaaa
的相应元素向我的web服务发送SOAP消息时,服务当然会正确地接受,不会出现任何错误
但是,如果我用
而不是F
(即#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
为什么?
ValidationEventHandler不是应该通过抛出“解组错误””来处理这个问题吗?JAXB模型(生成的或手工编码的)的注释中不包含XML模式中的所有元数据。如果要针对架构的所有方面进行验证,可以通过在解组器
上指定架构
的实例来启用此功能
JAXB模型(生成的或手工编码的)的注释中并不包含XML模式中的所有元数据。如果要针对架构的所有方面进行验证,可以通过在解组器
上指定架构
的实例来启用此功能
我终于找到了这个基于CXF的案例的正确答案
CXF已经内置了运行时架构验证。它被命名了,我的代码中唯一缺少的是启用它的XML,在已经存在的中,我终于找到了这个基于CXF的案例的正确答案
CXF已经内置了运行时架构验证。它是命名的,我的代码中唯一缺少的就是启用它的XML,在已经存在的Wow中+1已经。我将彻底阅读你的文章,并让你知道这是否对我有效。我是否正确理解这也意味着设置我自己的解决方案?好的,我尝试实现您的解决方案,但我没有main()
。我是否钩住了模式和解组器代码?看起来我处理这个问题的方式不对(因为涉及到CXF):根据,类路径上的CXF.xml配置文件(及其内容)改变了CXF的默认行为,即消息参数不会被验证。这是令人困惑的,因为如果我发送一个“?”而不是xs:timestamp
,我肯定会得到一个“解组错误”(默认!)。。。我错过了什么?哇+1已经。我将彻底阅读你的文章,并让你知道这是否对我有效。我是否正确理解这也意味着设置我自己的解决方案?好的,我尝试实现您的解决方案,但我没有main()
。我是否钩住了模式和解组器代码?看起来我处理这个问题的方式不对(因为涉及到CXF):根据,类路径上的CXF.xml配置文件(及其内容)改变了CXF的默认行为,即消息参数不会被验证。这是令人困惑的,因为如果我发送一个“?”而不是xs:timestamp
,我肯定会得到一个“解组错误”(默认!)。。。我错过了什么?
<jaxws:properties>
<entry key="schema-validation-enabled" value="true" />
</jaxws:properties>