Thomas,
I faced the same problem some time ago. It seems to be a bug (I reported
it). Try this to update the TypeDesc. In my case this solved the
problem:
/**
* Updates the type description of an Axis generated binding class.
* With setting the MinOccurs value to zero the xsi:nil elements
disappear while serializing.
* Otherwise the generated SOAP body is not a valid instance document.
*
* @param clazz the Axis binding class which has to be updated
* @throws NoSuchMethodException
* @throws InvocationTargetException
* @throws IllegalAccessException
*/
public static void updateClassTypeDesc(Class clazz) throws
NoSuchMethodException, InvocationTargetException, IllegalAccessException
{
// Using the reflection API to find the getter-method getTypeDesc
Method getTypeDescMethod = clazz.getMethod("getTypeDesc", new
Class[] {});
TypeDesc td = (TypeDesc) getTypeDescMethod.invoke(null, null);
// Iterate through all elements and set minOccurs() to zero for each
element
FieldDesc[] fds = td.getFields();
for (int i = 0; i < fds.length; i++) {
ElementDesc ed = (ElementDesc) fds[i];
ed.setMinOccurs(0);
}
}
Yves
On Mon, 2004-07-26 at 14:41, Dorner Thomas wrote:
> Thank you Yves for your fast reply,
>
> my WSDL looks like this:
>
> <schema elementFormDefault="qualified"
> targetNamespace="http://xml.apache.org/xml-soap"
> xmlns="http://www.w3.org/2001/XMLSchema">
> <complexType name="mapItem">
> <sequence>
> <element name="key" nillable="false" type="xsd:anyType"/>
> <element name="value" nillable="false" type="xsd:anyType"/>
> </sequence>
> </complexType>
> <complexType name="Map">
> <sequence>
> <element maxOccurs="unbounded" minOccurs="0" name="item"
> type="apachesoap:mapItem"/>
> </sequence>
> </complexType>
> </schema>
>
>
> When I generate my classes from this wsdl, it should not be possible to send
> a value that is null!?
>
> Thanks Tomi
>
>
> -----Urspr�ngliche Nachricht-----
> Von: Yves Langisch [mailto:[EMAIL PROTECTED]
> Gesendet: Montag, 26. Juli 2004 14:39
> An: axis
> Betreff: Re: Check if parameter is null ?
>
>
> Thomas,
>
> Do you mean that an Axis client (wsdl2jave) sends xsi:nil="true" altough
> the wsdl denies it?
>
> Yves
>
> On Mon, 2004-07-26 at 14:32, Dorner Thomas wrote:
> > Hi all,
> >
> > is it possible to let AXIS check if a parametervalue is == null?
> >
> > It shouldn t be possible for the client to send a nillable value.
> > But set the nillable="false" in the wsdl before generating my classes
> > have no effect.
> >
> > I would like to see something like a SOAP-Fault - parameter xxx is
> > nill!
> >
> > Have someone a hint for me?
> >
> > Thanks Tomi