最近项目需要搜索出全部的代理人信息及代理人的案例信息,展示到页面的效果如图:
以上结果展示出了代理人的相关信息,及这个人的案例信息。
/** * 搜索保险代理人 * */ @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> ${map.key.companyname} ${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"%>
以上涉及三重遍历。