Java 添加两个列表并以嵌套形式获取XML输出
我有两个对象和应用程序环境列表。我正在添加这些列表,但我得到的输出是一个完整的应用程序列表,而不是另一个完整的环境列表Java 添加两个列表并以嵌套形式获取XML输出,java,xml,list,object,jax-rs,Java,Xml,List,Object,Jax Rs,我有两个对象和应用程序环境列表。我正在添加这些列表,但我得到的输出是一个完整的应用程序列表,而不是另一个完整的环境列表 List<ApplicationWithEnvironments > AppWithEnvlist = new ArrayList<ApplicationWithEnvironments >(); for(ApplicationDTO d: allApplication) { ApplicationWit
List<ApplicationWithEnvironments > AppWithEnvlist = new ArrayList<ApplicationWithEnvironments >();
for(ApplicationDTO d: allApplication) {
ApplicationWithEnvironments appWithEnv = new ApplicationWithEnvironments();
Application a = new Application();
a.set...
appWithEnv.setApplication(a);
for(EnvironmentDTO en: d.getEnvironment())
{
Environment e = new Environment();
e.set...
appWithEnv.addEnvironment(e);
}
AppWithEnvList.add(appWithEnv);
}
ArrayList<MyModel> obj= new ArrayList<MyModel>();
MyModel mm = new MyModel();
mm.setAppWithEnvList(AppWithEnvList);
obj.add(mm);
return obj;
我希望它以嵌套形式出现,例如一个条目用于应用程序和环境,而不是第二行用于应用程序和环境,等等
这是我的代码:
@GET
@Path("/test")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public ArrayList<MyModel> Test(){
System.out.println("inside test");
List<ApplicationDTO> allApplication = applicationService.getAllApplication();
List<Application> Applist = new ArrayList<Application>();
List<Environment> Envlist = new ArrayList<Environment>();
for(ApplicationDTO d: allApplication)
{
Application a = new Application();
a.setApplicationDescription(d.getApplicationDescription());
a.setApplicationId(d.getApplicationId());
a.setApplicationName(d.getApplicationName());
a.setAssignedTo(d.getAssignedTo());
a.setCreatedBy(d.getCreatedBy());
a.setCreateTime(d.getCreateTime());
a.setModifiedTime(d.getModifiedTime());
a.setOwner(d.getOwner());
Environment e = new Environment();
for(EnvironmentDTO en: d.getEnvironment())
{
e.setEnvironmentId(en.getEnvironmentId());
e.setEnvironmentName(en.getEnvironmentName());
e.setOwner(en.getOwner());
e.setCreateTime(en.getCreateTime());
Envlist.add(e);
}
Applist.add(a);
}
ArrayList<MyModel> obj= new ArrayList<MyModel>();
MyModel mm = new MyModel();
mm.setAppDTO(Applist);
mm.setEnDTO(Envlist);
obj.add(mm);
return obj;
}
@GET
@路径(“/test”)
@产生({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
公共数组列表测试(){
系统输出打印(“内部测试”);
List allApplication=applicationService.getAllApplication();
List Applist=new ArrayList();
List Envlist=new ArrayList();
适用于(适用于d:所有应用)
{
应用程序a=新应用程序();
a、 setApplicationDescription(d.getApplicationDescription());
a、 setApplicationId(d.getApplicationId());
a、 setApplicationName(d.getApplicationName());
a、 setAssignedTo(d.getAssignedTo());
a、 setCreatedBy(d.getCreatedBy());
a、 setCreateTime(d.getCreateTime());
a、 setModifiedTime(d.getModifiedTime());
a、 setOwner(d.getOwner());
环境e=新环境();
for(EnvironmentDTO en:d.getEnvironment())
{
e、 setEnvironmentId(en.getEnvironmentId());
e、 setEnvironmentName(en.getEnvironmentName());
e、 setOwner(en.getOwner());
e、 setCreateTime(en.getCreateTime());
增列(e);
}
添加(a);
}
ArrayList obj=新的ArrayList();
MyModel mm=新的MyModel();
mm.setAppDTO(应用列表);
mm.setEnDTO(环境列表);
对象添加(mm);
返回obj;
}
编辑
我更改了我的类,在应用程序中添加了环境列表,现在我得到了应用程序中所有环境的列表,但我需要一个应用程序中的一个环境,下一个应用程序中的另一个环境,依此类推。我错过了什么
public List<Application> Test(){
System.out.println("inside test");
List<ApplicationDTO> allApplication = applicationService.getAllApplication();
List<Application> Applist = new ArrayList<Application>();
List<Environment> Envlist = new ArrayList<Environment>();
for(ApplicationDTO d: allApplication)
{
Application a = new Application();
a.setApplicationDescription(d.getApplicationDescription());
a.setApplicationId(d.getApplicationId());
a.setApplicationName(d.getApplicationName());
a.setAssignedTo(d.getAssignedTo());
a.setCreatedBy(d.getCreatedBy());
a.setCreateTime(d.getCreateTime());
a.setModifiedTime(d.getModifiedTime());
a.setOwner(d.getOwner());
for(EnvironmentDTO en: d.getEnvironment())
{
Environment e = new Environment();
e.setEnvironmentId(en.getEnvironmentId());
e.setEnvironmentName(en.getEnvironmentName());
e.setOwner(en.getOwner());
e.setCreateTime(en.getCreateTime());
Envlist.add(e);
}
a.setEnvlists(Envlist);
Applist.add(a);
}
return Applist;
公共列表测试(){
系统输出打印(“内部测试”);
List allApplication=applicationService.getAllApplication();
List Applist=new ArrayList();
List Envlist=new ArrayList();
适用于(适用于d:所有应用)
{
应用程序a=新应用程序();
a、 setApplicationDescription(d.getApplicationDescription());
a、 setApplicationId(d.getApplicationId());
a、 setApplicationName(d.getApplicationName());
a、 setAssignedTo(d.getAssignedTo());
a、 setCreatedBy(d.getCreatedBy());
a、 setCreateTime(d.getCreateTime());
a、 setModifiedTime(d.getModifiedTime());
a、 setOwner(d.getOwner());
for(EnvironmentDTO en:d.getEnvironment())
{
环境e=新环境();
e、 setEnvironmentId(en.getEnvironmentId());
e、 setEnvironmentName(en.getEnvironmentName());
e、 setOwner(en.getOwner());
e、 setCreateTime(en.getCreateTime());
增列(e);
}
a、 setEnvlists(Envlist);
添加(a);
}
返回应用程序列表;
您应该创建一个包含应用程序和环境列表的对象,如ApplicationWithEnvironments
List<ApplicationWithEnvironments > AppWithEnvlist = new ArrayList<ApplicationWithEnvironments >();
for(ApplicationDTO d: allApplication) {
ApplicationWithEnvironments appWithEnv = new ApplicationWithEnvironments();
Application a = new Application();
a.set...
appWithEnv.setApplication(a);
for(EnvironmentDTO en: d.getEnvironment())
{
Environment e = new Environment();
e.set...
appWithEnv.addEnvironment(e);
}
AppWithEnvList.add(appWithEnv);
}
ArrayList<MyModel> obj= new ArrayList<MyModel>();
MyModel mm = new MyModel();
mm.setAppWithEnvList(AppWithEnvList);
obj.add(mm);
return obj;
List-AppWithEnvlist=new-ArrayList();
适用于(适用于d:所有应用){
ApplicationWithEnvironments appWithEnv=新的ApplicationWithEnvironments();
应用程序a=新应用程序();
a、 设置。。。
appWithEnv.setApplication(a);
for(EnvironmentDTO en:d.getEnvironment())
{
环境e=新环境();
e、 设置。。。
附件环境附录(e);
}
AppWithEnvList.add(appWithEnv);
}
ArrayList obj=新的ArrayList();
MyModel mm=新的MyModel();
mm.设置AppWithEnvList(AppWithEnvList);
对象添加(mm);
返回obj;
或者您的应用程序对象中可以有一个环境列表,这样您就不再需要新的ApplicationWithEnvironments对象了。您是否生成了XSD并对其应用了JAXB?是否应该
Environment e=new Environment();
在for循环for中(EnvironmentDTO en:
?另外,您没有在应用程序
对象中的任何位置设置environlist
。@Shashank:我认为这将是他的问题的解决方案。设置a.setEnvironment(en);在Applist.add(a)之前;@ShashankKadne不,我在应用程序dto中没有envlist。我在应用程序和环境中有两个不同的dto类。我将发布我的类,看一看。请看一下编辑并告诉我缺少什么?我应该在类ApplicationWithEnvironments中有什么?我在该类中有两个列表,即List和List吗或者其他一些属性?您将有1个应用程序属性和1个列表属性。请查看编辑并告诉我缺少什么?