如何迭代在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中将地图作为字段的对象列表? [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 JSTL <c:forEach> 标签遍历 List 和 Map 的元素
如何在 Angular 2 中将对象转换为 JSON 列表?