1

コンテキスト: -- 次のコードを指定すると、例外が発生します。明確な説明でなぜそれが起こっているのか教えてください:

@GET
@Produces("application/xml")
public List getEmployee()
{
   List<Employee> emp=new ArrayList<Employee>();
   return emp;
}

@XmlRootElement
public class Employee{

}

getEmployee サービスを呼び出すと、次の例外が発生します。

原因: com.sun.jersey.api.MessageException: Java クラス java.util.ArrayList、Java タイプ インターフェイス java.util.List、および MIME メディア タイプ application/xml のメッセージ本文ライターが見つかりませんでした ... 30もっと

ありがとう

4

1 に答える 1

2

ArrayList のインスタンスである Employees のリストを返しています。arraylist ではなく Employee クラスでルート アノテーションを宣言しました。

従業員のリストを保持するためのラッパーを作成する必要があります。このラッパーを使用すると、リストのルート要素を作成できます。

import java.util.ArrayList;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name = "users")
public class Users {

    @XmlElement(name="user")
    private ArrayList users;

    public ArrayList getUsers() {
        return users;
    }

    public void setUsers(ArrayList users) {
        this.users = users;
    }
}

詳細については、以下のチュートリアルを参照してください。

http://howtodoinjava.com/2012/11/26/writing-restful-webservices-with-hateoas-using-jax-rs-and-jaxb-in-java/

于 2012-11-27T10:38:37.467 に答える