0

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;
    }
}
Nikrango
  • 87
  • 2
  • 11
  • Can you post the content of your class `Spravochnik`? – Anar Amrastanov Apr 17 '19 at 13:18
  • package net.lacit.militaryRegistr.entity; import java.util.HashMap; import javax.persistence.*; public class Spravochnik extends BaseEntity { private HashMap map; public HashMap getMap() { return map; } public void setMap(HashMap map) { this.map = map; } } – Nikrango Apr 17 '19 at 13:30

1 Answers1

1

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>    
Anar Amrastanov
  • 385
  • 1
  • 3
  • 13