【问题标题】:How to iterate over a list of objects which have a map as a field in jstl? [duplicate]如何遍历具有地图作为jstl中的字段的对象列表? [复制]
【发布时间】:2019-09-07 17:59:31
【问题描述】:

我有一个类 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.class

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;
    }  

}

也可能是 SpravochnikRowMapper

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;
    }
}

【问题讨论】:

  • 你能把你的课程内容贴出来Spravochnik吗?
  • 包 net.lacit.militaryRegistr.entity;导入 java.util.HashMap;导入 javax.persistence.*;公共类 Spravochnik 扩展 BaseEntity { private HashMap 映射; public HashMap getMap() { return map; } public void setMap(HashMap map) { this.map = map; } }

标签: java spring jsp hashmap jstl


【解决方案1】:

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

 <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>    

【讨论】:

  • 非常感谢!
猜你喜欢
  • 1970-01-01
  • 2011-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-22
  • 2019-11-25
相关资源
最近更新 更多