JSP页面中怎么遍历arraylist中的数组数据?包含层次较多!!!求助!!!!!!!!

时间:2021-07-08 02:26:33
我现在做的一个项目中 要在jsp页面中遍历arraylist中的所有数据放到相应位置!这个arraylist层次结构如下:
arraylist1
  arraylist2
    String[]str1
    arraylist3
      String[]str2
    /arraylist3

    ...重复arraylist3...

  /arraylist2

  ...重复arraylist2...

/arraylist1
请问该如何在jsp页面中遍历出所有的数据放到相应的显示位置!!!!!!!!!求助
注:这个arraylist是从后台返回来的,在页面中可用如下语句获得:
   <c:set var="list"  value="${requestScope.listhotel}" scope="page"/>

9 个解决方案

#1


怎么不用xml来传数据...
用for循环嵌套可以做吧

#2


for(Iterator iter1 = list1.iterator();iter1.hasNext()){
  for(Iterator iter2 = iter1.next().iterator();iter2.hasNext();){
    for(...
  }
}

#3


  public void listArray(ArrayList list){
    for(Object o : list) {
      if(o instanceof String[]) {
        String[] strs = (String[])o;
        for(String str : strs) {
          System.out.println(str);
        }
      }else if(o instanceof ArrayList) {
        listArray((ArrayList)o);
      }else {
        System.out.println("Not SUPPORT TYPE!!!");
        continue;
      }
    }
  }

#4


既然楼主已经在使用jstl了,建议就用jstl的<c:forEach>标签实现就可以了,这么简单:)

很不赞同楼上两位的说法,现在都是mvc编程,怎么还在使用jsp module1的开发模式呢?

#5


<c:forEach> ? 你知道嵌套多少层吗?

#6


你建个类,写上一个递归方法,在页面<c:set>一下,就可以用了吗

#7


首先你这样输出,设计上就是问题, sunvsmicsoft  说的MVC是错误的,jsp   module1 开发模式 只要你能够将逻辑代码放在bean中处理。
jsp来显示一样的是MVC而且是不错的MVC,
使用Kit_LO 的方法是正确的。

#8


哎 我是用脚本解决的!
不知道谁有更好的方法!
解决代码如下(供各位朋友改进用):
<%!
ArrayList listhotel;
ArrayList listmessage;
ArrayList listroom;
%>
<%
listhotel = (ArrayList)request.getAttribute("listhotel");//获取ArrayList
for(int i=0;i<listhotel.size();i++){
listmessage = (ArrayList)listhotel.get(i);//得到单个酒店ArrayList
String[] arrayhotel = (String[])listmessage.get(0);
String str = arrayhotel[0];
String image = str.substring(2);
String img ="http://www.sohoto.com/TDPWeb/htl/images/imagesHotel/"+image+"/WJ/"+image+"WJ01.jpg";
%>
do something....
<%
listroom = (ArrayList)listmessage.get(1);//得到酒店房型arraylist
for(int j=0;j<listroom.size();j++){
String[] arrayroom = (String[])listroom.get(0);
%>
do something....
<%
}listmessage.clear();//移除所有
%>

#9


对了 忘记告诉大家  这个问题的来源
是我最近做一个电子商务网站中用到航信接口中的酒店接口
在struts框架的action中,请求后从航信接口中返回的XML文件中的数据层次就是我开始所提到的层次结构
因而就有了如上所说的问题!暂不结帖 等待更好的解决办法!!!

#1


怎么不用xml来传数据...
用for循环嵌套可以做吧

#2


for(Iterator iter1 = list1.iterator();iter1.hasNext()){
  for(Iterator iter2 = iter1.next().iterator();iter2.hasNext();){
    for(...
  }
}

#3


  public void listArray(ArrayList list){
    for(Object o : list) {
      if(o instanceof String[]) {
        String[] strs = (String[])o;
        for(String str : strs) {
          System.out.println(str);
        }
      }else if(o instanceof ArrayList) {
        listArray((ArrayList)o);
      }else {
        System.out.println("Not SUPPORT TYPE!!!");
        continue;
      }
    }
  }

#4


既然楼主已经在使用jstl了,建议就用jstl的<c:forEach>标签实现就可以了,这么简单:)

很不赞同楼上两位的说法,现在都是mvc编程,怎么还在使用jsp module1的开发模式呢?

#5


<c:forEach> ? 你知道嵌套多少层吗?

#6


你建个类,写上一个递归方法,在页面<c:set>一下,就可以用了吗

#7


首先你这样输出,设计上就是问题, sunvsmicsoft  说的MVC是错误的,jsp   module1 开发模式 只要你能够将逻辑代码放在bean中处理。
jsp来显示一样的是MVC而且是不错的MVC,
使用Kit_LO 的方法是正确的。

#8


哎 我是用脚本解决的!
不知道谁有更好的方法!
解决代码如下(供各位朋友改进用):
<%!
ArrayList listhotel;
ArrayList listmessage;
ArrayList listroom;
%>
<%
listhotel = (ArrayList)request.getAttribute("listhotel");//获取ArrayList
for(int i=0;i<listhotel.size();i++){
listmessage = (ArrayList)listhotel.get(i);//得到单个酒店ArrayList
String[] arrayhotel = (String[])listmessage.get(0);
String str = arrayhotel[0];
String image = str.substring(2);
String img ="http://www.sohoto.com/TDPWeb/htl/images/imagesHotel/"+image+"/WJ/"+image+"WJ01.jpg";
%>
do something....
<%
listroom = (ArrayList)listmessage.get(1);//得到酒店房型arraylist
for(int j=0;j<listroom.size();j++){
String[] arrayroom = (String[])listroom.get(0);
%>
do something....
<%
}listmessage.clear();//移除所有
%>

#9


对了 忘记告诉大家  这个问题的来源
是我最近做一个电子商务网站中用到航信接口中的酒店接口
在struts框架的action中,请求后从航信接口中返回的XML文件中的数据层次就是我开始所提到的层次结构
因而就有了如上所说的问题!暂不结帖 等待更好的解决办法!!!