很简单,自己实现VectorSerializer,在里面加上这样的判断:
if (src == null)
        {
            SoapEncUtils.generateNullStructure(inScopeEncStyle,
                                                 javaType,
                                                 context,
                                                 sink,
                                                 nsStack,
                                                 xjmr);
        }当然要import org.apache.soap.encoding.soapenc.SoapEncUtils;

解决方案 »

  1.   

    1楼是继承VectorSerializer吧,然后再generateNullStructure
    不过我想这不是一个很好的办法我现在是将vector再封装一层SoapInfoBean.java,
    public int state = -1;
    public Vector soapV = new Vector();
    用state来表示null和其它状态不知道有没有更好的办法,做一个单独的null的序列化器,不管vector、hashtabe还是其它的对象,都可以传null
      

  2.   

    smart.:)
    对你的问题,我也只是就事论事。不过你已经考虑到更深层次的问题了,说明你确实思考过了。这样的讨论比单纯解决问题有意思的多。
    我想你的方法不是很好。你这样还不如用重构中null objet来的更好些,何况你需要对用到的各种object都进行这样的处理。有些不合算哦。
    所以,我的做法是:自己实现Serializer, Deserializer接口。比如:自己定义一个DataSerializer,public class DataSerializer implements Serializer, Deserializer
    里面你需要自己实现unmarshall和marshall方法,方法定义如下: public void marshall(String inScopeEncStyle, Class javaType, Object src,
                           Object context, Writer sink, NSStack nsStack,
                           XMLJavaMappingRegistry xjmr, SOAPContext ctx)
        throws IllegalArgumentException, IOException{}public Bean unmarshall(String inScopeEncStyle, QName elementType, Node src,
                             XMLJavaMappingRegistry xjmr, SOAPContext ctx)
        throws IllegalArgumentException{}其中可以对javaType进行判断,进行null的处理。不知道这样好不好。。
    Good Luck!