3

これは、2 つの異なるオブジェクトを追加する関数です。

@GET
@Path("/getApplicationEnv")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public List<Object> getApplicationEnv(){

    List<ApplicationDTO> allApplication = applicationService.getAllApplication();                       
    List<Application> Applist = new ArrayList<Application>();

    for(ApplicationDTO d: allApplication)
    {
        Application a = new Application();

        a.setApplicationId(d.getApplicationId());
        a.setApplicationName(d.getApplicationName());
        a.setCreateTime(d.getCreateTime());
        a.setOwner(d.getOwner());   
        Applist.add(a);
    }   

    List<EnvironmentDTO> allEnvironments = environmentService.getAllEnvironments();

    List<Environment> Envlist = new ArrayList<Environment>();

    for(EnvironmentDTO d: allEnvironments)
    {
        Environment e = new Environment();

        e.setEnvironmentId(d.getEnvironmentId());
        e.setEnvironmentName(d.getEnvironmentName());
        e.setOwner(d.getOwner());
        e.setCreateTime(d.getCreateTime());
        Envlist.add(e);
    }

    ArrayList<Object> obj= new ArrayList<Object>();
    obj.addAll(Applist);
    obj.addAll(Envlist);

    return obj;
}

現在、2 つのオブジェクトを追加するために Object の ArrayList を使用していますが、次のエラーが発生しています。

* SEVERE: Java クラス java.util.ArrayList、Java タイプ java.util.List、および MIME メディア タイプ application/xml のメッセージ ボディ ライターが見つかりませんでした *

共通の親クラスを作成しようとしましたが、両方のクラス共通のいくつかの属性を持っているため、共通の親クラスを持つことはできません。

誰でもこれを達成する方法を提案してもらえますか?

4

2 に答える 2

5

変更してみることができます

    ArrayList<Object> obj= new ArrayList<Object>();
    obj.addAll(Applist);
    obj.addAll(Envlist);

ArrayList<MyModel> obj= new ArrayList<MyModel>();
MyModel mm = new MyModel();
mm.setVal1(Applist);
mm.setVal2(Envlist);
obj.add(mm);

アップデート

class MyModel
{
   private ApplicationDTO appDTO;
   private EnvironmentDTO enDTO;

   //getters settters here
}

これは、要件に応じMyModelて2つのモデルクラスです.. これが役立つことを願っていますfields

于 2013-06-26T10:38:38.367 に答える
1

問題は、オブジェクトが xml 要素と見なされないことです。このようなオブジェクトを作成できます

@XmlRootElement
public class MyObject{
private List<Application> somename;
private List<Environment> somename2;
//Getters
//setters
}

そして、このようにします

    public List<MyObject> getApplicationEnv(){
/*Some code*/
}
于 2013-06-26T10:40:22.690 に答える