2
JAX-rを使用してサーバーからクライアントにArrayListを送信する際に問題があります。 - RESTサーバーに FileDetailsが開始される - データ ConfigFilesを保存する3つのフィールドがある - それは、ファイルのためのいくつかのメソッドを持っており、FileDetailsのリスト RestServerオブジェクトがあります - 方法があるRESTの要素のマーシャリング
デモ:私は4つのクラスを持っています
私は次のコードを持ってGET:クライアント側で
@XmlRootElement(name="FileDetails")
@Path("/easy")
public class RestSerwer {
@GET
@Path("/temporary")
@Produces("text/temporary")
public String methodGet() {
ConfigFiles cf = ConfigFiles.getInstance();
List<FileDetails> files = cf.getList();
try {
JAXBContext ctx = JAXBContext.newInstance(ArrayList.class, FileDetails.class);
Marshaller m = ctx.createMarshaller();
StringWriter sw = new StringWriter();
m.marshal(files, sw);
return sw.toString();
} catch (JAXBException e) {
e.printStackTrace();
}
return null;
}
}
を私が持っているGetRest:
public class GetRest{
HttpClient client = null;
GetMethod method = null;
private String url = null;
public GetRest(String url) {
this.url = url;
}
public String getBody(String urlDetail){
client = new HttpClient();
method = new GetMethod(url + urlDetail);
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler(3, false));
try {
client.executeMethod(method);
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
byte[] responseBody = null;
try {
responseBody = method.getResponseBody();
} catch (IOException e) {
e.printStackTrace();
}finally{
method.releaseConnection();
}
String str = new String(responseBody);
return str;
}
public String getFiles(){
return getBody("/easy/temporary");
}
}
は私がしようとすると:それはスロー
GetRest getRestClass = new GetRest("http://localhost:8185");
//List<FileDetails> cf = new ArrayList<FileDetails>();
String xxxx = getRestClass.getFiles(); // TODO
:
Caused by: com.sun.istack.internal.SAXException2: unable to marshal type "java.util.ArrayList" as an element because it is missing an @XmlRootElement annotation
サーバー側では。
誰かが私を助けることができますか?あなたがリストの一番上にラッパーであるか、または独自のproviderを書いて、それがどのようにマーシャル/アンマーシャリングArrayListに認識できるようにジャージでそれを注入するクラスを所有して作成します:あなたは基本的には2つの可能性を持っている
おかげ