I have a class Spravochnik which has a field HashMap. How to iterate over it with jstl? I want to a jsp page to show me table. The Spravochnik map maps column name to column object of a given table (column count can be different depending on the table). This is my method in controller.
@RequestMapping(value = "/list")
public String getSpravochniks(Model m, @RequestParam String tableName)
{
List<Spravochnik> spravList =
spravochnikService.findAll(tableName);
m.addAttribute("spravList", spravList);
return "list";
}
when i have my jsp like below it shows error Attribute qualified name must be unique within an element (id is a field of superclass Spravochnik inherits
<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;
}
}
Also maybe 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;
}
}
I think you have to iterate map (the field map
of the class Spravochnik
) too.
Maybe like that:
<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>