gpt4 book ai didi

java - 如何在 jSTL 中迭代将映射作为字段的对象列表?

转载 作者:行者123 更新时间:2023-12-02 09:59:42 27 4
gpt4 key购买 nike

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


@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是父类(super class)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;
}
}

最佳答案

我认为你也必须迭代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>

关于java - 如何在 jSTL 中迭代将映射作为字段的对象列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55728385/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com