jstl遍历list<map<user,list<cases>>>

最近项目需要搜索出全部的代理人信息及代理人的案例信息,展示到页面的效果如图:

以上结果展示出了代理人的相关信息,及这个人的案例信息。

/**
	 * 搜索保险代理人
	 * */
	@RequestMapping(value = "/search")
	public String indexSearch(ModelMap modelMap) {
		// 可以抽取出单独的方法
		UDBUserDao userDao = AppContext.getBean("userDao", UDBUserDao.class);
		CasesDao caseDao = AppContext.getBean("casesDao", CasesDao.class);
		String name = this.request.get().getParameter("searchname") == null ? ""
				: this.request.get().getParameter("searchname");
		int pageSize = AppUtils.getIntValue(CMConfig.getProperty("pageSize"));
		int currPageNum = AppUtils.getIntPage(this.request.get().getParameter(
				"page.currPageNum"));
		page.setCurrPageNum(currPageNum);
		page.setPageSize(pageSize);
		StringBuffer sql = new StringBuffer();
		sql.append("  and  name like '%").append(name).append("%'")
				.append(" and status & ").append(JournalDaily.STATUS_DELETED)
				.append(" != ")
				// 未删除
				.append(JournalDaily.STATUS_DELETED);
		page.init(AppConstant.DATABASE_SCHEMA_UDB_BB_USER + "."
				+ AppConstant.DATABASE_TABLE_UDB_USER,
				" CONVERT( name USING gbk ) COLLATE gbk_chinese_ci ", pageSize,
				page.getCurrPageNum(), sql.toString(), "");
		/* List<AccountUser> userlist = userDao.getSearchUser(name); */
		List<AccountUser> userlist = userDao.getSearchUser(page.getSQL());
		List<Map<AccountUser, List<Cases>>> usercases = new 
                ArrayList<Map<AccountUser, List<Cases>>>();
		for (AccountUser accountUser : userlist) {
			Map<AccountUser, List<Cases>> m = new HashMap<AccountUser, List<Cases>>();
			List<Province> provinces = AppProvinceAndCity.provinces;
			if (accountUser.getProvince() == null) {
				accountUser.setCityname("(尚未填写地区)");
			} else {
				for (Province province : provinces) {

					if (province.getCode() == accountUser.getProvince()) {
						accountUser.setCityname(province.getValue());
						break;
					}
				}
			}
			List<Cases> clist = caseDao.criteriaQueryByUserid(
					accountUser.getUid(), "  order by createtime desc");

			ArrayList<ListItem> list = AppConstant.INSURANCE_COMPANY;
			for (ListItem listItem : list) {
				if (accountUser.getCompany() == listItem.getKey()) {
					accountUser.setCompanyname(listItem.getValue());
					break;
				}
			}
			m.put(accountUser, clist);
			usercases.add(m);
		}
		modelMap.put("page", page);
		modelMap.put("searchname", name);
		modelMap.put("usercases", usercases);
		this.model.get().addAttribute("title",
				"搜索_" + CMConfig.getProperty("default.title"));
		return "search/search";
	}
List<Map<AccountUser, List<Cases>>> usercases = new ArrayList<Map<AccountUser, List<Cases>>>();

   注意:map 是无序插入数值的,跟list不同,如果采用map封装值的话,你会发现页面展示时候排序凌乱,而且每次访问都是不同的结果。

所以要封装到List里面,这就涉及到如何遍历问题。

遍历List 结果为map,map为 map<accountUser,List<cases>>

key,和value都是封装的,所以还需要遍历。

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="/WEB-INF/view/includes.jsp"%>
<%@ include file="/WEB-INF/view/header.jsp"%>
<%
	String path = request.getContextPath();
%>
<!--nav-->
<div id="nav_wrap">
	<ul id="nav">
		<li></li>
		<li></li>
	</ul>
</div>
<!--nav end-->

<!--search_content-->
<div id="search_content">
	<div class="search_type">
		<form action='<spring:url value="/search"></spring:url>' method="post">
			<input type="text" value="${searchname}" class="search_text"
				name="searchname" /> <input type="submit" value="搜索"
				class="search_button" />
		</form>
	</div>
	<c:if test="${!empty usercases}">
		<h4 class="search_tips">找到相关结果共${page.rowCounts}条</h4>
	</c:if>
	<c:forEach items="${usercases}" var="usercases">
		<c:forEach items="${usercases}" var="map">
		<div class="search_piece">
			<!-- 
        	<a href='<spring:url value="/profile?uid=${map.key.uid}"></spring:url>' title=""><img src="${map.key.photo}" alt="" class="search_photo" /></a>
        	 -->
			<a
				href='<spring:url value="/profile?uid=${map.key.uid}"></spring:url>'
				title="" target="_blank">
				<c:choose>
				<c:when test="${empty map.key.photo}"><img src="/static/images/no_photo.png" alt=""
				class="search_photo" />
				</c:when>
				<c:otherwise>
				<img src="${map.key.photo}" alt=""
				class="search_photo" />
				</c:otherwise>
				</c:choose>
				<cite>${map.key.name}</cite>
			</a> &nbsp;&nbsp;&nbsp;&nbsp; ${map.key.companyname}
			&nbsp;&nbsp;&nbsp;&nbsp; ${map.key.department} <br />
			手机:${map.key.cellphone}
			<p>
				我是来自${map.key.cityname=="省"?"暂无地区":map.key.cityname}的<cite>${map.key.name
					}</cite>。我愿竭尽全力让我的家人及朋友都拥有人寿保险的保障。无后顾之忧。愿所有的朋友都能一生太平安康!长命百岁!
			</p>
			<dl>
				<dt>最近案例:</dt>
				<c:forEach items="${map.value }" var="cases" begin="0" end="1">
					<dd>
						<a
							href='<spring:url value="/cases/showCaseForFront?id=${cases.id}"></spring:url>'
							title="${cases.title}">${cases.title}</a>${cases.title}
					</dd>${cases.updatetime }
            	</c:forEach>
			</dl>
		</div>
		</c:forEach>
	</c:forEach>
	<!--pages-->
	<div class="pages_wrap">
		<div class="pages">
			<c:if test="${!empty usercases}">
				<p:btn url="/search" currentPage="${page.currPageNum}"
					countSize="${page.rowCounts}" pageKey="page.currPageNum"
					params="{searchname:${searchname}}" pageSize="${page.pageSize}"
					selectPage="select" />
			</c:if>
		</div>
	</div>
	<!--pages end-->
	<!--no_result-->
	<c:if test="${empty usercases}">
		<p class="fs14 tace h30 lh30">抱歉!没有找到与“${searchname}”相关的内容</p>
	</c:if>
	<!--no_result end-->
	<div class="search_type">
		<form action='<spring:url value="/search"></spring:url>' method="post">
			<input type="text" value="${searchname}" class="search_text"
				name="searchname" /> <input type="submit" value="搜索"
				class="search_button" />
		</form>
	</div>
</div>
<%@ include file="/WEB-INF/view/footer.jsp"%>
 

以上涉及三重遍历。

猜你喜欢

转载自woshixushigang.iteye.com/blog/1233619
今日推荐