如何将两个不同的对象添加到一个单一对象中

3

这是我的函数,它可以将两个不同的对象相加。

@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;
}

目前我使用的是对象ArrayList来添加两个对象,但是出现了以下错误:

*SEVERE:未找到Java类java.util.ArrayList的消息体编写器,Java类型为java.util.List和MIME媒体类型为application/xml

我尝试过创建一个共同的父类,但是由于两个类具有某些通用属性,因此不可能拥有共同的父类。

请问有人能提供一种实现这一任务的方法吗?

2个回答

5

你可以尝试更改

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

to

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只是一个模型类,根据您的要求有两个fields字段...希望这能帮到您。


在MyModel类中,你在谈论哪两个字段? - Prats
存储您的应用程序列表和环境列表的字段 - Michael Shrestha
这些字段已经在我的ApplicationDTO和EnvironmentDTO类中了。我正在添加我的类,请看一下。 - Prats

1
问题在于对象不被视为xml元素。您可以像这样创建一个对象
@XmlRootElement
public class MyObject{
private List<Application> somename;
private List<Environment> somename2;
//Getters
//setters
}

并且像这样做

    public List<MyObject> getApplicationEnv(){
/*Some code*/
}

我将所有的getter和setter都放在ApplicationDTO和EnvironmentDTO中。那么我应该在MyObject中放置哪些getter和setter呢? - Prats
对于这些列表,私有的List<Application> somename; 私有的List<Environment> somename2; - karthick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接