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>