将空字符串设置为xsi:nil = true

时间:2013-04-15 18:13:46

标签: java rest jersey jaxb2 xml-nil

我有这个班级

package com.ni.schemas.provider_framework._1.providers;

import java.math.BigInteger;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;


/**
 * 
 *                 This is the top-level for a Request. 
 *                 Providers may extend this type if needed, but may not restrict it by blocking the pre-defined elements
 *             
 * 
 * <p>Clase Java para RequestErrorType complex type.
 * 
 * <p>El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase.
 * 
 * <pre>
 * &lt;complexType name="RequestErrorType">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="httpResponseCode" type="{http://www.w3.org/2001/XMLSchema}integer"/>
 *         &lt;group ref="{http://www.ni.com/schemas/provider-framework/1/providers}ErrorElementGroup"/>
 *       &lt;/sequence>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "RequestErrorType", propOrder = {
    "httpResponseCode",
    "summary",
    "userMessage",
    "detail"
})
public class RequestErrorType {

    @XmlElement(required = true)
    protected BigInteger httpResponseCode;
    protected String summary;
    protected String userMessage;
    protected String detail;

    /**
     * Obtiene el valor de la propiedad httpResponseCode.
     * 
     * @return
     *     possible object is
     *     {@link BigInteger }
     *     
     */
    public BigInteger getHttpResponseCode() {
        return httpResponseCode;
    }

    /**
     * Define el valor de la propiedad httpResponseCode.
     * 
     * @param value
     *     allowed object is
     *     {@link BigInteger }
     *     
     */
    public void setHttpResponseCode(BigInteger value) {
        this.httpResponseCode = value;
    }

    /**
     * Obtiene el valor de la propiedad summary.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getSummary() {
        return summary;
    }

    /**
     * Define el valor de la propiedad summary.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setSummary(String value) {
        this.summary = value;
    }

    /**
     * Obtiene el valor de la propiedad userMessage.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getUserMessage() {
        return userMessage;
    }

    /**
     * Define el valor de la propiedad userMessage.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setUserMessage(String value) {
        this.userMessage = value;
    }

    /**
     * Obtiene el valor de la propiedad detail.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getDetail() {
        return detail;
    }

    /**
     * Define el valor de la propiedad detail.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setDetail(String value) {
        this.detail = value;
    }

}

如果我想将userMessage变量设置为null,则在显示时间,只显示此

<userMessage />

我需要显示

<userMessage xsi:nil="true" />

我该怎么做?

1 个答案:

答案 0 :(得分:1)

使用以下内容将在编组时将null视为nil

@XmlElement(nillable = true)
protected String userMessage;

如果WSDL / XSD的元素defind为nillable,那么代码生成将生成以下内容

protected JaxbElement<String> userMessage;

我可以从你的javadoc中看出生成的代码不是你今天使用的代码。如果你正在打击另一个人的网络服务,我建议从他们的wsdl生成正确的dto对象。您可以查看jdk / bin目录中的xjc.exe和wsdl.exe文档。