2010-05-20 4 views
3

est-il un moyen simple pour permettre le rassemblement et unmarshalling String [] Liste à RESTEasy?RESTEasy - simple, tableau de chaînes/collection TRIAGE

Mon exemple de code:

@GET 
@Path("/getSomething") 
@Produces(MediaType.APPLICATION_JSON) 
public List<String> getSomeData() { 
    return Arrays.asList("a","b","c","d"); 

} 

Au-dessus me donne une exception:

Could not find MessageBodyWriter for response object 
of type: java.util.Arrays$ArrayList of media type: application/json 

Répondre

1

J'ai le même problème avec XML et JSON. Je n'ai pas trouvé une solution pour encore mais je pense qu'il doit faire avec JAXB.

Il se trouve que le problème est que JAXB vient déjà avec JDK6 et les dépendances de JBoss est incorrecte. Ils doivent trouver une autre solution pour cela que la façon dont il est fait maintenant. Tout comment est-ce que vous pouvez résoudre:

<!-- JAXB Reasteasy support --> 
<dependency> 
    <groupId>org.jboss.resteasy</groupId> 
    <artifactId>resteasy-jaxb-provider</artifactId> 
<version>1.2.1.GA</version> 
<scope>compile</scope> 
<exclusions> 
    <exclusion> 
     <groupId>com.sun.xml.bind</groupId> 
     <artifactId>jaxb-impl</artifactId> 
    </exclusion> 
    <exclusion> 
     <groupId>com.sun.xml.stream</groupId> 
     <artifactId>sjsxp</artifactId> 
    </exclusion> 
</exclusions> 

Vous obtiendrez le fournisseur RESTEASY JAXB mais pas les fichiers JAXB de Maven.

4

Vous pourriez avoir besoin de l'envelopper comme ceci:

public List<JaxbString> getList(){ 
    List<JaxbString> ret= new ArrayList<JaxbString>(); 
    List<String> list = Array.asList("a","b","c"); 
      for(String s:list){ 
       ret.add(new JaxbString(s)); 
      } 
    return ret; 
} 

@XmlRootElement 
public class JaxbString { 

    private String value; 

    public JaxbString(){} 

    public JaxbString(String v){ 
     this.setValue(v); 
    } 

    public void setValue(String value) { 
     this.value = value; 
    } 

    @XmlElement 
    public String getValue() { 
     return value; 
    } 

}