2015-07-15 1 views
2

В моем Response.xsd у меня есть много элементов, как:Скрытие XML-элементы с нуля = "истинной" с JAXB

... 
<xs:element type="xs:string" name="carModel" minOccurs="0"> 
</xs:element> 
... 

Я вызвал JAXBClasses от .xsd. Результат:

@XmlAccessorType(XmlAccessType.FIELD) 
    @XmlType(name = "", propOrder = { 
     //... 
     "carModel" 
     //... 
    }) 
    public static class Car{ 

    //... 
    protected String carModel; 
    //...getter and setters. 

    } 

Строительство моего ответа WebService:

Car car = new Car(); 
    //other params 
    car.setCarModel(null); 

В генерироваться им ответ получает:

<ax23:carModel xsi:nil="true"/> 

Но я не ожидал укомплектовать не carModel тега вообще. Я хочу пропустить его полностью

Что я делаю неправильно? Почему null становится nil когда nillable = false по умолчанию.

Я не уверен, что то, что вы просили @Xstian:

Часть моего web.xml:

<servlet> 
    <servlet-name>AxisServlet</servlet-name> 
    <servlet-class> 
     org.apache.axis2.transport.http.AxisServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>AxisServlet</servlet-name> 
    <url-pattern>/services/*</url-pattern> 
</servlet-mapping> 

Мои WEB-INF/services/CarService/META-INF/services.xml:

<service name="CarService" > 
<Description> 
    Please Type your service description here 
</Description> 
<messageReceivers> 
    <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" /> 
    <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> 
</messageReceivers> 
<parameter name="ServiceClass" locked="false">com.foo.ws.CarService</parameter> 
</service> 

ответ

1

Используйте эту аннотацию @XmlElement(nillable=false)

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "", propOrder = { 
    //... 
    "carModel" 
    //... 
}) 
public static class Car{ 

//... 
@XmlElement(nillable=false) 
protected String carModel; 
//...getter and setters. 

} 
+0

Я уже пробовал. Он может работать, но я вижу довольно странную вещь в моем созданном WSDL. Даже если я добавлю '@ XmlElement (nillable = false)' to' carElement', wsdl выглядит так: ' ilovkatie

+0

У вас есть 'XmlJavaTypeAdapter' на' package-info.java'? – Xstian

+0

Как вы показываете свой WS? Возможно, есть некоторые глобальные конфигурации. Добавьте некоторые сведения об этом. – Xstian

Смежные вопросы