2012-09-11 45 views
2

我面臨的問題是在客戶端響應中獲取Jersey通用列表。我需要將它作爲實體出於某種原因。上述JERSEY - 在響應中訪問通用列表

@XmlRootElement(name="list") 
@XmlSeeAlso({RESTDomain.class}) 
public class JAXBContainer<T> { 
    private List<T> items = new ArrayList<T>(); 

    public JAXBContainer() { } 

    public JAXBContainer(List<T> items) { 
     this.items = items; 
    } 

    @XmlElementWrapper(name="items") 
    @XmlAnyElement(lax=true) 
    public List<T> getItems() { 
     return items; 
    } 

    public void setItems(List<T> items) { 
     this.items = items; 
    } 

    @XmlAttribute 
    public int getItemsSize() { 
     return this.items.size(); 
    } 

是我的泛型列表的resopnse

@GET 
    @Produces({MediaType.APPLICATION_XML}) 
    public Response getREST(){ 
     RESTDomain domain = new RESTDomain(); 
     domain.setName("Adams"); 
     domain.setPlace("Zurich"); 
     List<RESTDomain> restDomains = new ArrayList<RESTDomain>(); 
     restDomains.add(domain);   
     JAXBContainer<RESTDomain> jAXBContainer= new JAXBContainer<RESTDomain>(restDomains);   
     GenericEntity<JAXBContainer<RESTDomain>> genericEntity = new GenericEntity<JAXBContainer<RESTDomain>>(jAXBContainer){}; 


     return Response.ok(genericEntity).build(); 

    } 

林返回與genericEntity容器。我知道只用ListEntityEntity內我可以讓我的客戶我的實體,但問題是我需要使用我的JAXBContainer出於某種原因。

@Test 
      public void restGet() throws JAXBException{  
       ClientConfig cc = new DefaultClientConfig();   
       client = Client.create(cc); 
      String baseURI ="http://localhost:3555/SampleREST/rest/sample"; 
        WebResource webResource = client.resource(baseURI);   
        JAXBContainer<RESTDomain> jAXBContainer= webResource.get(new GenericType<JAXBContainer<RESTDomain>>(){});   
        System.out.println("response:: "+jAXBContainer.getItemsSize()); 
    } 

我的問題是需要的,但容器的大小爲0。我在這裏缺少什麼即時得到與GenericType響應爲JAXBContainer?我必須使用任何編組和解組機制。

但是當我在瀏覽器中請求這個URI時,我得到了格式良好的XML,但是它在客戶端中失敗了,或者我們有任何其他方法來提取客戶端中的實體。在此先感謝

回答

0

我沒有看到你在客戶端的任何地方設置接受內容類型。 試一試:webResource.accept(「application/xml」)