Как зациклить ключ и значение (которое находится в UserDefinedClass) Hashmap в ModelAndView для JSP с использованием JSTL

1

У меня возникла проблема с отображением моего ключа и значения из моего HashMap в котором значение указано в User Defined Class, это ошибка, которая показывает

Изображение 174551

Student.class :

class Student 
{
   private String name;
   private int age;
   //getter and setter
}

Мой КОНТРОЛЛЕР:

@RequestMapping(value = "/showStudent", method = RequestMethod.GET)
public ModelAndView retrievesession(HttpSession session) 
{
    ModelAndView mav = new ModelAndView("ShowStudent");
    Map<String,ArrayList<Student>> classList = new HashMap<String,ArrayList<Student>>();
    ArrayList<Student> student = new ArrayList<Student>();

    String nameUser = (String) session.getAttribute("name");
    String trackUser = (String) session.getAttribute("track");

    if(nameUser.equals("Kakashi") && trackUser.equals("Konoha"))
    {
        student.add(new Student("Naruto",12));
        student.add(new Student("Sasuke",13));
        classList.put("Ninja", student);

        mav.addObject("classList", classList);
    }

    else if(nameUser.equals("Goku") && trackUser.equals("Earth"))
    {
        student.add(new Student("Gohan",25));
        student.add(new Student("Goten",13));
        classList.put("Fighter", student);

        mav.addObject("classList", classList);
    }

    else if(nameUser.equals("Ryuk") && trackUser.equals("Killer"))
    {
        student.add(new Student("Kira",22));
        student.add(new Student("L",21));
        classList.put("Reaper", student);

        mav.addObject("classList", classList);
    }

    return mav;
}

Мой JSP:

<h3>Name: ${name}</h3>  
<h3>Track: ${track}</h3><br/><br/><br/>
<h3>Your student from ${classList.key}</h3>
<c:if test="${not empty classList}">
    <table>
    <c:forEach items="${classList}" var="classList">
       <tr>
           <td>${classList.value.name}</td>
           <td>${classList.value.age}</td>
       </tr>
    </c:forEach>
    </table>
</c:if>

Я не знаю, правильно ли я делаю это, он просто показывает значения, с которыми у меня возникла проблема, а также могу добавить оператор else, поэтому, если сеанс равен null он вернется на страницу входа?

  • 0
    Как мне это сделать?
  • 0
    Смотрите мой ответ ниже.
Теги:
jsp
spring-mvc
jstl

2 ответа

1
Лучший ответ

Перейдя по карте, вы получите еще одну коллекцию, в которой вы должны выполнить итерацию в другом цикле, прежде чем сможете получить свойства объекта.

<table>
<c:forEach items="${classList}" var="list">
  <tr><td><h3>Your student from ${list.key}</h3></td></tr>
  <tr><td>
   <table>
   <c:forEach items="${list.value}" var="student">
       <tr>
           <td>${student.name}</td>
           <td>${student.age}</td>
       </tr>
    </c:forEach>
   </table>
  </td></tr>
</c:forEach>
</table>
0

Используйте код как: -

<h3>Name: ${name}</h3>  
<h3>Track: ${track}</h3><br/><br/><br/>
<h3>Your student from ${classList.key}</h3>
<c:if test="${not empty classList}">
   <table>
<c:forEach items="${classList}" var="class">
   <tr>
       <td>${class.name}</td>
       <td>${class.age}</td>
   </tr>
</c:forEach>
</table>

  • 0
    пробовал, и это новая ошибка org.apache.jasper.JasperException: javax.el.ELException: не удалось проанализировать выражение [$ {class.name}]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню