Jsp页面中通过jstl遍历 java代码中通过
request.setAttribute("newslist", list);
传过来的list对象
Java代码片段如下:
Sql语句如下
select * from (select t.* ,c.column_id,d.level_code from cms_article t ,cms_column_article c ,CMS_COLUMN d where t.id=c.article_id and c.column_id=d.id and d.LEVEL_CODE like'00070008%' and t.state='已发布' order by t.createtime desc) where rownum <6
在java代码中通过
List list = jdbcTemplate.queryForList(sql); 获取List集合,(这里的jdbcTemplate是spring的)
此时list的返回值为如下格式:
[
{ID=100000031133, TITLE=英语作文:The Countryside in Summer, AUTHOR=hulicheng, CREATETIME=2013-04-27 17:23:30.0, STATE=已发布, LIMIT_PUB=null, SUMMARY=Summer has come, with its warm sunny days,
, OUTLINK=null, FORM_ID=100000001504, PD_ID=0, KEYWORDS=英语作文 夏日的农村, INDEX_YN=0, COLUMN_ID=100000001811, LEVEL_CODE=00070008},
{ID=100000031125, TITLE=英语作文:I Love Summer , AUTHOR=hulicheng, CREATETIME=2013-04-27 17:19:18.0, STATE=已发布, LIMIT_PUB=null, SUMMARY=It is true that summer is hot, very hot. , OUTLINK=null, FORM_ID=100000001504, PD_ID=0, KEYWORDS=英语作文 I Love Summer , INDEX_YN=0, COLUMN_ID=100000001811, LEVEL_CODE=00070008},
{ID=100000031109, TITLE=初一英语作文:父亲给我的礼物, AUTHOR=yinlulu, CREATETIME=2013-04-12 11:17:16.0, STATE=已发布, LIMIT_PUB=null, SUMMARY=When I was young,my father ,who always taught me how to be a true man,told me that it is essential to be tolerant in your life whatever happens.
, OUTLINK=null, FORM_ID=100000001504, PD_ID=0, KEYWORDS=初一 英语作文 父亲给我的礼物, INDEX_YN=0, COLUMN_ID=100000001811, LEVEL_CODE=00070008}
]
在action代码中有如下代码
request.setAttribute("newslist", list);
那么jsp中通过jstl遍历的代码如下
首先引入<%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c"%>
<c:if test="${not empty newslist }">
<c:forEach items="${newslist}" var="smart" varStatus="status">
<li><a href="${pageContext.request.contextPath}/article/getAritcleContent.do?id=${smart['ID']}&columnID=${smart['COLUMN_ID']}&sessionid=${pageContext.session.id}&levelCode=${smart['LEVEL_CODE']}">${smart["TITLE"]}
</a></li>
</c:forEach>
</c:if>
Jsp页面中通过jstl遍历 java代码中通过
request.setAttribute("newslist", list);
传过来的list对象,此时的list对象中包含的是一个个的map,每个map中的value又是一个list集合
Java 代码:
List<String> courses = new ArrayList<String>();
//添加课程编号1~9
List coursesList = new ArrayList();
for(int i=1;i<10;i++){
//查询课程的名称
Map map = myCmsArticleBPO.getQuestionAnswerNameMap(i+"");
//查询某课程前几条的数据
List course = myCmsArticleBPO.getQuestionAnswerMap(i+"");
Map courseInfo = new HashMap();
courseInfo.put(map.get("name"),course);
//向list中添加map对象,键是课程名,值是 该课程对应的前几条问题的list集合
coursesList.add(courseInfo);
}
request.setAttribute("aritcleList", coursesList);
这个方法要说一下
public Map getQuestionAnswerNameMap(String id) ,
他的方法体是
String sql="select sb.name ,sb.id from sc_subject sb where sb.id='"+id+"'";
Map map=jdbcTemplate.queryForMap(sql);
return map;
jdbcTemplate是spring的东西,这里的queryForMap方法有些意思
这里的map的返回值的数据如下:
{NAME=语文, ID=1}
此时在java代码中通过map.get("name") 可以获得 map中name键对应的值 语文
在jsp中通过jstl进行遍历的代码如下
<!-- aritcleList中存放的是一个个的map,map中的value是list -->
<c:if test="${not empty aritcleList}">
<c:forEach items="${aritcleList}" var="temp"> <!—-遍历list对象aritcleList,变量temp中是一个个的map-->
<c:forEach items="${temp}" var="map"> <!--${temp}获取当前map的值,并把值保存到map变量中-->
<div class="sx_title"><a href="#" class="fright mr15">更多</a>${map.key}</div> <!—key为课程名-->
<c:if test="${not empty map.value}"> <!—这里的map.value此时为list集合,保存着多条问题的list-->
<c:forEach items="${map.value}" var="smart" varStatus="status">
<ul class="sx_list_ul">
<li><a href="${pageContext.request.contextPath}/article/getQuestionAnswers.do?id=${smart['ID']}&columnID=${columnID }">${smart["questiontile"]}</a></li>
</ul>
</c:forEach>
</c:if>
</c:forEach>
</c:forEach>
</c:if>