В моем 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>
Я уже пробовал. Он может работать, но я вижу довольно странную вещь в моем созданном WSDL. Даже если я добавлю '@ XmlElement (nillable = false)' to' carElement', wsdl выглядит так: '
ilovkatie
У вас есть 'XmlJavaTypeAdapter' на' package-info.java'? – Xstian
Как вы показываете свой WS? Возможно, есть некоторые глобальные конфигурации. Добавьте некоторые сведения об этом. – Xstian