java – JAXB生成简单类型缺失限制
我正在生成我的第一个JAXB数据绑定.我有一个架构,其中包含一个xs:simpleType:
<xs:simpleType name="NINumberType"> <xs:restriction base="xs:string"> <xs:pattern value="[A-Z]{2}d{6}[A-D]{0,1}"/> </xs:restriction> </xs:simpleType> 在我的binding.xjb中我有这个: <jxb:bindings version="1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" jxb:extensionBindingPrefixes="xjc"> <jxb:bindings schemaLocation="mySchema.xsd" node="/xs:schema"> <jxb:globalBindings mapSimpleTypeDef="true" /> <jxb:schemaBindings> <jxb:package name="com.company.jaxb.mySchema"/> </jxb:schemaBindings> </jxb:bindings> </jxb:bindings> 然后,通过Eclipse(RAD 7.5),我右键单击模式,然后选择Generate-> Java.这会产生预期的数据绑定对象,但NINumberType没有内置限制: /** * <p>Java class for NINumberType simple type. * * <p>The following schema fragment specifies the expected content contained within this class. * * <pre> * <simpleType name="NINumberType"> * <restriction base="{http://www.w3.org/2001/XMLSchema}string"> * <pattern value="[A-Z]{2}d{6}[A-Z]{0,1}"/> * </restriction> * </simpleType> * </pre> */ @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "NINumberType",propOrder = {"value"}) public class NINumberType { @XmlValue protected String value; public String getValue() {return value;} public void setValue(String value) {this.value = value;} } 除了类级别javadoc之外,没有提到我的模式中指定的正则表达式限制. JAXB似乎具有生成限制代码所需的信息,但未使用它.任何人都可以帮我确保生成限制代码,以便尝试绑定格式不佳的NI编号会失败吗? 解决方法
JAXB不会在Java模型中生成这些限制.如果希望在转换为XML或从XML转换期间强制执行此约束,则可以在Marshaller / Unmarshaller上指定javax.xml.validation.Schema的实例.
欲获得更多信息 > http://blog.bdoughan.com/2010/12/jaxb-and-marshalunmarshal-schema.html 您可能能够找到利用JSR-303之类的XJC扩展来进行验证约束.以下链接可能有所帮助: > https://www.java.net//forum/topic/glassfish/metro-and-jaxb/jaxb-plugin-generate-bean-validation-annotations-jsr-303 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |