Java 在列表中迭代映射,以便在JSP中将值显示为行
我需要显示Java 在列表中迭代映射,以便在JSP中将值显示为行,java,spring,jsp,jstl,Java,Spring,Jsp,Jstl,我需要显示Map中的值,Map在列表中。 现在,我的值以列方式显示(如sceenshot所示)。不是以行方式,而是以列方式显示所有值 如上图所示, 拿第一张唱片, 100应与列支付代码对应 基本工资应与说明对应 25300应与金额对应 第二,是没用的,我不想再显示了 获取数据的我的服务方法: public List<Map<String, Object>> searchPayCodeByempCode(String tabSuffix, String empCode,
Map
中的值,Map在列表中。
现在,我的值以列方式显示(如sceenshot所示)。不是以行方式,而是以列方式显示所有值
如上图所示,
拿第一张唱片,
100应与列支付代码对应
基本工资应与说明对应
25300应与金额对应
第二,是没用的,我不想再显示了
获取数据的我的服务方法:
public List<Map<String, Object>> searchPayCodeByempCode(String tabSuffix, String empCode, String yyyyMm) {
MapSqlParameterSource param = new MapSqlParameterSource();
String tableName = "Salary_detail_report_082018";
String query = "SELECT "
+ " DISTINCT PAY_CODE, "
+ " PAY_CODE_DESC, "
+ " AMOUNT, "
+ " row_number() over (Order by EMP_CODE ) AS ROW_NUM "
+ " FROM " + tableName
+ " WHERE EMP_CODE=" + empCode
+ " AND YYYYMM=" + yyyyMm
+ " AND PAY_CODE NOT IN (997,998,999) "
+ " ORDER BY PAY_CODE ASC ";
List<Map<String, Object>> employees = queryForList(query);
if (employees != null && !employees.isEmpty()) {
for (Map<String, Object> employee : employees) {
System.out.println("The set is: " + employee.keySet());
for (Iterator<Map.Entry<String, Object>> it = employee.entrySet().iterator(); it.hasNext();) {
Map.Entry<String, Object> entry = it.next();
String key = entry.getKey();
Object value = entry.getValue();
System.out.println(key + " = " + value);
}
}
}
return employees;
公共列表搜索PayCodeByEmpCode(字符串tabSuffix,字符串empCode,字符串yyyyMm){
MapSqlParameterSource param=新的MapSqlParameterSource();
String tableName=“工资明细报告”082018”;
String query=“选择”
+不同的支付代码
+“支付代码说明,”
+“金额,”
+“行号()超过(按EMP代码排序)作为行号”
+“FROM”+表名
+“其中EMP_代码=“+EMP代码
+“和YYYYMM=“+YYYYMM
+“和支付代码不在(997998999)”
+“按付款代码ASC订购”;
列出员工=查询列表(查询);
if(employees!=null&&!employees.isEmpty()){
用于(映射员工:员工){
System.out.println(“设置为:+employee.keySet());
for(Iterator it=employee.entrySet().Iterator();it.hasNext();){
Map.Entry=it.next();
String key=entry.getKey();
对象值=entry.getValue();
System.out.println(键+“=”+值);
}
}
}
返回员工;
JSP代码:
<table class="table table-striped table-bordered dataTable no-footer tableWidth" role="grid" name="employeeList" id="employeeList">
<thead>
<tr>
<th width="5%">S. No.</th>
<th width="10%">Pay Code</th>
<th width="15%">Description</th>
<th width="10%">Amount</th>
</tr>
</thead>
<tbody>
<c:forEach var="map" items="${mapList}">
<c:forEach var="mapEntry" items="${map}">
<tr>
<%--<td>test : ${mapEntry.key}</td>--%>
<td>test : ${mapEntry.value}</td>
</tr>
</c:forEach>
</c:forEach>
</tbody>
</table>
美国号。
支付代码
描述
数量
测试:${mapEntry.value}
预期产出:
您应该将列表项作为表行(
)进行迭代,并且对于每一行,将列表项的映射作为表单元格进行迭代(
):
哦,伙计,非常感谢,这真是一个愚蠢的错误,嘿,还有一件事,我如何忽略行数值,它也是映射值的一部分。谢谢伙计,但实际上我需要按付款代码对列表进行排序,所以我不选择行数,而是选择varStatus=“counter”列表的排序方式对于JSP中的渲染并不重要,重要的是映射项的顺序是否固定(那么您可以使用第一个选项)或者不固定(那么最好使用第二个选择选项)你太好了,你的解决方案会对所有访问过这篇文章的人都有帮助,你提供了所有可能的解决方案,非常感谢我之前所想的,我想把列表中地图的值转换成列表,然后把列表传递给jsp I,e列表,我想转换V进入列表并传递相同的jsp内部,这不是一个简单的方法吗?
<tbody>
<c:forEach var="map" items="${mapList}">
<tr>
<c:forEach var="mapEntry" items="${map}">
<td>${mapEntry.value}</td>
</c:forEach>
</tr>
</c:forEach>
</tbody>
<c:forEach var="mapEntry" items="${map}" varStatus="status">
<c:if test="${status.index <= 4 }">
<td>${mapEntry.value}</td>
</c:if>
</c:forEach>
<tbody>
<c:forEach var="map" items="${mapList}">
<tr>
<td width="5%">${map.get("ROW_NUM")}</td>
<td width="10%">${map.get("PAY_CODE")}</td>
<td width="15%">${map.get("PAY_CODE_DESC")}</td>
<td width="10%">${map.get("AMOUNT")}</td>
</tr>
</c:forEach>
</tbody>