Spring-mvc ve Jaxb2Marshaller kullanarak bir web hizmetinde çalışıyorum.Jaxb2Marshaller'ı aynı @XmlRootElement adı olan birden çok sınıfla kullanma
İki sınıf var, hem
@XmlRootElement(name="request")
class Foo extends AstractRequest {
}
@XmlRootElement(name="request")
class Bar extends AbstractRequest {
}
Tüm üç sınıfa (AbstractRequest Foo, Bar)
Şimdi aynı sıraylaisteği içinde classesToBeBound listesinde bulunan aynı @XmlRootElement
adıyla açıklamalı Bar kullanan iyi çalışıyor. Ama Foo kullanan bir Bar bunun sonrasında yazıldığı beri Foo basan türüdür çünkü oluyor ben bu tahmin
Source source = new StreamSource(new StringReader(body));
Foo request = (Foo) this.jaxb2Marshaller.unmarshal(source);
, mesajın
Bar cannot be cast to Foo
kontrolör kod şudur ile unmarshalling sırasında ClassCastException istisna atar
Spring-servlet.xml dosyasında bağlanacak sınıfların listesinde Foo Ayrıca, @XmlRootElement(name="response")
ile açıklamalı birden çok sınıfım var ve yanıtı bildirme, herhangi bir sorun vermez.
jaxb2Marshaller tarafından unmarshalling için kullanılacak sınıfı belirtmenin bir yolu var mı?
Hayır, bunu yapmanın bir yolu yok. Tasarımlarınızı birbirinden ayırt etmek için yeniden düzenlemelisiniz. – skaffman