有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何迭代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>

斯普拉沃奇尼克。阶级

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

共 (1) 个答案

  1. # 1 楼答案

    我认为您还必须迭代map(类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>