有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

jaxb2 Jaxb自定义字符串适配器绑定到Java类型列表<String>

我使用自定义字符串适配器来修剪和删除多余的空格,但保留换行符。 我创建了一个绑定文件来使用新适配器

xjb:

<jaxb:globalBindings>
<xjc:javaType name="java.lang.String" xmlType="xsd:string" adapter="com.xsd.adapter.CleanStringAdapter"/>        
        <xjc:serializable uid="1" />
</jaxb:globalBindings>

xsd:

<xs:complexType name="BarStatus">       
    <xs:sequence>
        <xs:element name="BarType" type="xs:string" minOccurs="1" maxOccurs="unbounded" />          
    </xs:sequence>
    <xs:attribute name="Id" type="xs:nonNegativeInteger" use="required"/>
    <xs:attribute name="Name" type="xs:string" use="required" />
    <xs:attribute name="ShortDescription" type="xs:string" use="required" />
    <xs:attribute name="LongDescription" type="xs:string" use="required" />
</xs:complexType>

生成的Java类属性

private final static long serialVersionUID = 1L;
    @XmlElement(name = "BarType", required = true)
    @XmlJavaTypeAdapter(CleanStringAdapter.class)
    protected List<String> barType;
    @XmlAttribute(name = "Id", required = true)
    @XmlSchemaType(name = "nonNegativeInteger")
    protected BigInteger id;
    @XmlAttribute(name = "Name", required = true)
    @XmlJavaTypeAdapter(CleanStringAdapter.class)
    protected String name;
    @XmlAttribute(name = "ShortDescription", required = true)
    @XmlJavaTypeAdapter(CleanStringAdapter.class)
    protected String shortDescription;
    @XmlAttribute(name = "LongDescription", required = true)
    @XmlJavaTypeAdapter(CleanStringAdapter.class)
    protected String longDescription;

但是类型为List的属性BarType也被映射到CleanStringAdapter JAVAClassCastException:java。util。无法将ArrayList转换为java。封送处理期间的lang.String

有没有办法将映射仅限于字符串类型而不限于列表


共 (0) 个答案