`
woshixushigang
  • 浏览: 576273 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

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

    博客分类:
  • j2ee
 
阅读更多

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

 

 

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

 

/**
	 * 搜索保险代理人
	 * */
	@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"%>
 

以上涉及三重遍历。

分享到:
评论

相关推荐

    jstl 遍历_jstl遍历_

    除了`&lt;c:forEach&gt;`,JSTL还提供了其他遍历标签,如`&lt;c:forTokens&gt;`用于遍历字符串中的分隔符。同时,JSTL还可以和其他标签库(如fmt、sql、function等)配合使用,实现更复杂的逻辑。 总之,JSTL遍历是Java Web开发...

    jstl 遍历_jstl遍历_源码.zip

    对于Map,`&lt;c:forEach&gt;`会遍历键值对,`var`属性可以分别设置为`key`或`value`来访问键或值。若要同时访问键和值,可以使用`varStatus`属性创建一个迭代状态对象。例如: ```jsp &lt;c:forEach items="${map}" var=...

    struts_jstl

    &lt;tr&gt;&lt;br&gt; &lt;td&gt;姓名&lt;/td&gt;&lt;br&gt; &lt;td&gt;年龄&lt;/td&gt;&lt;br&gt; &lt;td&gt;所属组&lt;/td&gt;&lt;br&gt; &lt;/tr&gt;&lt;br&gt; &lt;c:forEach var="user" items="${userlist}"&gt;&lt;br&gt; &lt;tr&gt;&lt;br&gt; &lt;td&gt;&lt;c:out value="${user.username}"/&gt;&lt;/td&gt;&lt;br&gt; &lt;td&gt;&lt;c:out value="${...

    Java 课程设计 高校公寓管理系统

    &lt;artifactId&gt;jstl&lt;/artifactId&gt; &lt;version&gt;1.2&lt;/version&gt; &lt;artifactId&gt;jsp-api&lt;/artifactId&gt; &lt;version&gt;2.2&lt;/version&gt; &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt; &lt;version&gt;8.0.28&lt;/version&gt; ...

    JSP+Struts+JSTL+EL新闻发布系统jsp

    &lt;td width="594" height="16" valign="top" background="/images/index_13.jpg"&gt;&lt;script language='JavaScript' type='text/JavaScript' src='/Article/js/menu.js'&gt;&lt;/script&gt; &lt;script type='text/javascript' ...

    Spring MVC 框架应用实例

    &lt;welcome-file-list&gt; &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt; &lt;welcome-file&gt;index.html&lt;/welcome-file&gt; &lt;/welcome-file-list&gt; &lt;jsp-config&gt; &lt;taglib&gt; &lt;taglib-uri&gt;http://java.sun.com/jsp/jstl/core...

    spring和mybatis结合的maven工程

    &lt;artifactId&gt;jstl&lt;/artifactId&gt; &lt;version&gt;1.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;mysql&lt;/groupId&gt; &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt; &lt;version&gt;5.1.36&lt;/version&gt; &lt;/...

    ssm的jar包

    &lt;artifactId&gt;jstl&lt;/artifactId&gt; &lt;version&gt;1.2&lt;/version&gt; &lt;/dependency&gt; &lt;!-- servlet、jsp、jstL所需要的依赖end--&gt; &lt;!--处理日期格式--&gt; &lt;dependency&gt; &lt;groupId&gt;joda-time&lt;/groupId&gt; ...

    c标签遍历集合嵌套的List集合

    对于嵌套的集合(例如:List中包含List),使用`c`标签库(JSTL)进行遍历是一种常见的做法。本文将详细介绍如何利用`c:forEach`标签来遍历这种嵌套的数据结构。 #### 1. 基础知识介绍 在Java Web项目中,通常会...

    在线订餐系统基于Javawen

    &lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;网上订餐系登录系统&lt;/title&gt; &lt;SCRIPT language="javascript" src="/js/javaScript.js"&gt;&lt;/SCRIPT&gt; &lt;/head&gt; &lt;body&gt; ...

    JSTL标准标签库 <C:out>、<c:set>、<c:remove>和<c:catch>标记 <c:if>、<c:choose>、<c:when>和<c:otherwise>标记 <c:forEach>和<c:forTokens>标记

    1. `&lt;c:forEach&gt;`:用于遍历集合、数组或迭代对象,实现循环操作。 2. `&lt;c:forTokens&gt;`:对字符串进行分割,然后对每个分割出来的元素进行循环处理。 **使用JSTL的好处**: - 提高代码的可读性:通过使用XML样式的...

    servlte加jstl传递List集合

    List&lt;String&gt; dataList = new ArrayList&lt;&gt;(); dataList.add("数据1"); dataList.add("数据2"); // ... request.setAttribute("dataList", dataList); ``` 3. 将集合传递到JSP:通过`request....

    JSP页面设计表格

    List&lt;User&gt; users = userDAO.getAllUsers(); request.setAttribute("users", users); RequestDispatcher dispatcher = request.getRequestDispatcher("jsp/page.jsp"); dispatcher.forward(request, response); ...

    使用jstl c 标签使用的jar包 standard。jar 以及jstl.jar 下载后先解压

    &lt;artifactId&gt;jstl&lt;/artifactId&gt; &lt;version&gt;1.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;taglibs&lt;/groupId&gt; &lt;artifactId&gt;standard&lt;/artifactId&gt; &lt;version&gt;1.1.2&lt;/version&gt; &lt;/dependency&gt; &lt;/...

    SpringBoot整合jsp.docx

    List&lt;Users&gt; list = new ArrayList&lt;&gt;(); list.add(new Users(1, "张三", 20)); list.add(new Users(2, "李四", 22)); list.add(new Users(3, "赵武", 25)); model.addAttribute("list", list); return "user...

    jstl EL表达式遍历Map的方法

    &lt;title&gt;遍历Map示例&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;c:set var="map2" value="${requestScope.map2}" /&gt; &lt;c:forEach var="item" items="${map2}"&gt; ${item.key} =&gt; ${item.value}&lt;br/&gt; &lt;/c:forEach&gt; &lt;/body&gt; &lt;/html&gt; ``` ...

    jstl应用,例子jstl应用,例子

    &lt;title&gt;JSTL应用示例&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;table border="1"&gt; &lt;tr&gt; &lt;th&gt;用户名&lt;/th&gt; &lt;th&gt;邮箱&lt;/th&gt; &lt;/tr&gt; &lt;c:forEach items="${users}" var="user"&gt; &lt;tr&gt; &lt;td&gt;${user.name}&lt;/td&gt; &lt;td&gt;${user.email}&lt;/...

    导入JSTL标签库的两个jar包

    &lt;groupId&gt;javax.servlet.jsp.jstl&lt;/groupId&gt; &lt;artifactId&gt;jstl&lt;/artifactId&gt; &lt;version&gt;1.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;taglibs&lt;/groupId&gt; &lt;artifactId&gt;standard&lt;/artifactId&gt; &lt;version&gt;...

    jstl需要导入的两个jar包

    &lt;artifactId&gt;jstl&lt;/artifactId&gt; &lt;version&gt;1.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;taglibs&lt;/groupId&gt; &lt;artifactId&gt;standard&lt;/artifactId&gt; &lt;version&gt;1.1.2&lt;/version&gt; &lt;/dependency&gt; &lt;/...

    ssm黑马旅游整合最终版2018

    &lt;artifactId&gt;jstl&lt;/artifactId&gt; &lt;/dependency&gt; &lt;!-- Servlet API --&gt; &lt;dependency&gt; &lt;groupId&gt;javax.servlet&lt;/groupId&gt; &lt;artifactId&gt;servlet-api&lt;/artifactId&gt; &lt;/dependency&gt; &lt;!-- JSP API --&gt; ...

Global site tag (gtag.js) - Google Analytics