表建出来如下:
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="#">第一章 项目管理 </a>
<ul>
<li class="Child">第一节 <a href="outlineinfo.htm">我是1.1 </a> </li>
<li class="Child">第二节 <a href="#">我是1.2 </a> </li>
<li class="Child">第三节 <a href="#">我是1.3 </a> </li>
<li class="Child">第四节 <a href="#">我是1.4 </a> </li>
</ul>
</li>
</ul>
6 个解决方案
#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
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
有点变形……不好意思
#3
你自己试试:
[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]
[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]
#4
感谢楼上两位,问题已经解决了,3楼的代码我也看过的,不过最后我研究的不是这段代码,也是HashMap遍历的, 感谢大家
#5
ding
#6
记得结贴!
#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
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
有点变形……不好意思
#3
你自己试试:
[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]
[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]
#4
感谢楼上两位,问题已经解决了,3楼的代码我也看过的,不过最后我研究的不是这段代码,也是HashMap遍历的, 感谢大家
#5
ding
#6
记得结贴!