如何迭代在jstl中将地图作为字段的对象列表? [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何迭代在jstl中将地图作为字段的对象列表? [重复]相关的知识,希望对你有一定的参考价值。

我有一个Spravochnik类,它有一个字段HashMap。如何用jstl迭代它?我想要一个jsp页面向我展示表格。 Spravochnik映射将列名映射到给定表的列对象(列数可能因表而异)。这是我在控制器中的方法。


 @RequestMapping(value = "/list")
  public String getSpravochniks(Model m, @RequestParam String tableName)
  {
    List<Spravochnik> spravList =
        spravochnikService.findAll(tableName);
    m.addAttribute("spravList", spravList);
    return "list";
  }

当我有我的jsp如下所示它显示错误属性限定名称必须在元素内是唯一的(id是超类Spravochnik继承的字段


  <c:forEach var="sprav" items="${spravList}">
            <tr>
                <td>
                    ${sprav.id}
                </td>
                <td>
                    ${sprav.map}
                </td>
            </tr>
        </c:forEach>

Spravochnik.klass

public class Spravochnik extends BaseEntity {

    private HashMap<String, Object> map;

    public HashMap<String, Object> getMap() {
        return map;
    }

    public void setMap(HashMap<String, Object> map) {
        this.map = map;
    }  

}

也许是Spravochnik RowMapper

public class SpravochnikRowMapper implements RowMapper<Spravochnik> {
    @Override
    public Spravochnik mapRow(ResultSet rs, int arg1) throws SQLException {
        Spravochnik spr = new Spravochnik();
        ResultSetMetaData rsmeta = rs.getMetaData();
        HashMap<String, Object> map = new HashMap<>();
        int columnCount = rsmeta.getColumnCount();

        for(int column = 1; column <= columnCount; column++){
            map.put(rsmeta.getColumnName(column),rs.getObject(column));
        }

        return spr;
    }
}
答案

我认为你也必须迭代地图(类map的字段Spravochnik)。也许是这样的:

 <c:forEach var="sprav" items="${spravList}">
        <tr>
            <td>
                ${sprav.id}
            </td>
            <td>
                <c:forEach items="${sprav.map}" var="entry">
                  Key = ${entry.key}, value = ${entry.value}<br>
                </c:forEach> 
            </td>
        </tr>
    </c:forEach>    

以上是关于如何迭代在jstl中将地图作为字段的对象列表? [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将地图作为 jpa 查询返回?

使用 JSTL <c:forEach> 标签遍历 List 和 Map 的元素

如何在 Angular 2 中将对象转换为 JSON 列表?

如何在 MySQL/MariaDB 中将 LONGTEXT 字段作为 JSON 返回

如何在文本字段中将对象作为输入传递。并得到它的对象

如何在没有 JSTL 的情况下遍历 JSP 上的数组列表