Java クラス java.util.ArrayList のメッセージ本文ライター...および MIME メディア タイプ text/xml が見つかりません 質問する

Java クラス java.util.ArrayList のメッセージ本文ライター...および MIME メディア タイプ text/xml が見つかりません 質問する

私は Jersey を使用して REST サービスを構築し、Collection<String>XML として返したいと考えています。

@GET
@Produces(MediaType.TEXT_XML)
@Path("/directgroups")
public Response getDirectGroupsForUser(@PathParam("userId") String userId) {
    try {
        Collection<String> result = service.getDirectGroupsForUser(userId, null, true);

//      return result; //first try
//      return result.toArray(new String[0]); //second try
        return Response.ok().type(MediaType.TEXT_XML).entity(result).build(); //third try
    } catch (UserServiceException e) {
        LOGGER.error(e);
        throw new RuntimeException(e.getMessage());
    }
}

しかし、私の試みは次の例外を除いて失敗しました。

javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: Java クラス java.util.ArrayList、Java タイプ クラス java.util.ArrayList、および MIME メディア タイプ text/xml のメッセージ本文ライターが見つかりませんでした

そして、Google で見つけたその例外に対するすべての結果は、私の状況のように text/xml ではなく text/json を返すことに対処していました。

誰か助けてくれませんか? Response を使用すると、それが XML のルート要素になり、コレクションはその中の文字列要素のリストになると思いました。

ベストアンサー1

使用

List<String> list = new ArrayList<String>();
GenericEntity<List<String>> entity = new GenericEntity<List<String>>(list) {};
Response response = Response.ok(entity).build();

汎用エンティティ ラッパーは、レスポンス ビルダーを使用するときに出力を取得するために機能します。

参照

おすすめ記事