这是我的功能,它添加了两个不同的对象。
@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;
}
目前我正在使用Object的ArrayList来添加两个对象,但我收到以下错误:
* SEVERE:找不到Java类java.util.ArrayList和Java类型java.util.List的消息正文编写器,并且找不到MIME媒体类型application / xml *
我尝试过制作一个共同的父类,但是我有一些普通类的属性,所以不可能有一个共同的父类。
有人可以建议我实现这个目标吗?
答案 0 :(得分: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
只是一个模型类,根据您的要求有两个fields
。
希望这有帮助
答案 1 :(得分:1)
问题是对象不被视为xml元素。您可以创建这样的对象
@XmlRootElement
public class MyObject{
private List<Application> somename;
private List<Environment> somename2;
//Getters
//setters
}
并且喜欢这个
public List<MyObject> getApplicationEnv(){
/*Some code*/
}