说明:数据库里只有一张表,名字是课程大纲表,字段只有两个,id(varchar即课程大纲ID号,assigned)和name(varchar即课程大纲标题) 
表建出来如下: 
00101    第一章 
0010101  第一章第一节 
0010102  第一章第二节 
00102    第二章 
0010201  第二章第一节 
0010202  第二章第二节 
0010203  第二章第三节 
........ 
(补充:前三位"001"表示课程编号,这个无关紧要,反正只能是3位数,紧接着两位数"01"表示章号,再紧接着两位数"01"表示节号,另外我规定章号和节号最多只能到08) 因为数据库中只有一个表,我用Hibernate对应也只有一个Outline(课程大纲类),属性有id,name两个,在DAOImpl中如何用HQL查询并保存在Collection中,然后在JSP中用struts标签遍历(logic:iterator)给显示出来 请问大家: 
现在我可以得到的是章节的HashMap,如何在JSP页面里打印出来,即logic:iterate对于HashMap的遍历,其中HashMap中key是"chapter"对象(也可以是chapter.getName()即章名的字符串),value是"lesson"集合 查找并获得HashMap的代码如下: 
public HashMap selectOutlineForBrowse(String outlineId) { 
HashMap h=new HashMap(); 
for(int i=1;i <=8;i++){ 
Criteria c=getSession().createCriteria(Outline.class); 
String chapterId=outlineId+"0"+i; 
// System.out.println(chapterId); 
c.add(Restrictions.like("id", chapterId, MatchMode.EXACT)); 
Outline chapter=(Outline) c.uniqueResult(); 
for(int j=1;j <=8;j++){ 
Criteria cc=getSession().createCriteria(Outline.class); 
String lessonId=chapterId+"0"+j; 
// System.out.println(lessonId); 
cc.add(Restrictions.like("id", lessonId,MatchMode.EXACT)); 
List lessons=cc.list(); 
h.put("chapter.getName()", lessons); 


return h; 
} 如何用logic:iterate在下面的静态页面代码中输出? 资料网上找了,但是还是迷茫?请高手指教! <ul> 
    <li class="Opened"> <img class=s src="../css/s.gif" onclick="javascript:ChangeStatus(this);"> <a href="#">第一章 &nbsp;项目管理 </a> 
    <ul> 
    <li class="Child">第一节&nbsp;&nbsp; <a href="outlineinfo.htm">我是1.1 </a> </li> 
    <li class="Child">第二节&nbsp;&nbsp; <a href="#">我是1.2 </a> </li> 
    <li class="Child">第三节&nbsp;&nbsp; <a href="#">我是1.3 </a> </li> 
    <li class="Child">第四节&nbsp;&nbsp; <a href="#">我是1.4 </a> </li> 
    </ul> 
</li> 
</ul>

解决方案 »

  1.   

    楼主的Map:key         ----- value
    chapter1 ---- List lessons1       
                      |            
                        |--lesson 11  
                        |--lesson 12  
                        |--lesson 13  
                        |……………… 
                                      
    chapter2 ---- List lessons2       
        |            
                        |--lesson 21  
                        |--lesson 22  
                        |--lesson 23  
                        |……………… 是这意思吧?
    使用iterate标签遍历map,是可以的,但是取得value后,是一个List
    iterate的嵌套
    此等小事,问Google
    附送一个搜索结果:http://hi.baidu.com/songwentao/blog/item/13d8b901f8ced7031c95836a.html
      

  2.   

    你自己试试:
    [code=JSP]
    <logic:iterate> 标签还可以遍历HashMap 中的元素, 例如:
        <%
            HashMap months = new HashMap();
            
            months.put("Jan","January");
            months.put("Feb","February");
            months.put("Mar","March");
            
            request.setAttribute("month", months);
        %>
        <logic:iterate id="element" indexId="ind" name="months">
            <bean:write name="ind"/>.                       // 序号
            <bean:write name="element" property="key"/>:     // 键名
            <bean:write name="element" property="value"/>    // 键值
        </logic:iterate>
    [/code]
      

  3.   

    感谢楼上两位,问题已经解决了,3楼的代码我也看过的,不过最后我研究的不是这段代码,也是HashMap遍历的, 感谢大家