Как отобразить объекты карты в файле c: forEach Jsp - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь отобразить значения объекта HashMap в <c:forEach. Но только я не могу отобразить значения объекта. <c:forEach var="empl" items="${empList}"> В этом случае empl.name не работает

I Может отображать только object.value в файле jsp. Возможно, я ошибаюсь при отправке объекта Map в jsp файл

Мой контроллер employerController.java

``

@ Контроллер открытого класса EmployerController {

@RequestMapping(value = "/empList",method = RequestMethod.GET)
public String employerList(){
    return "employerMain";
}

@RequestMapping(value = "/empl_account",method = RequestMethod.POST)
public String AddEmployer(@RequestParam("name") String name, ModelMap modelMap){

    String employerName = name;

    HashMap<Employer,String> map = new HashMap<>();

    Employer one = new Employer(1,"Jack","jack@gmail.com",200000);
    Employer two = new Employer(2,"Oven","oven@gmail.com",450000);
    Employer three = new Employer(3,"Nick","nick@gmail.com",600000);

    map.put(one,one.getName());
    map.put(two,two.getName());
    map.put(three,three.getName());

    modelMap.addAttribute("empList",map);

    return "employerList";
}

} ``

my Employeer.java

``

private int id;
private String name;
private String email;
private int salary;

public Employer(int id, String name, String email, int salary) {
    this.id = id;
    this.name = name;
    this.email = email;
    this.salary = salary;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public int getSalary() {
    return salary;
}

public void setSalary(int salary) {
    this.salary = salary;
}

``

my employerList.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<h2>Submitted Employer Information</h2>

<ol>
    <c:forEach var="empl" items="${empList}">
        <li>${empl.value.id}</li>
        <li>${empl.value.name}</li>
        <li>${empl.value.email}</li>
    </c:forEach>
</ol>

</body>
</html>

Я хочу видеть идентификатор, имя, адрес электронной почты в файле JSP

1 Nick nick@gmail.com 2 Jack jack@gmail.com

1 Ответ

1 голос
/ 07 октября 2019

Вместо карты вы можете взять список следующим образом:

@RequestMapping(value = "/empl_account",method = RequestMethod.POST)
public String AddEmployer(@RequestParam("name") String name, ModelMap modelMap){

    String employerName = name;

    List<Employer> employers = new ArrayList<>();

    Employer one = new Employer(1,"Jack","jack@gmail.com",200000);
    Employer two = new Employer(2,"Oven","oven@gmail.com",450000);
    Employer three = new Employer(3,"Nick","nick@gmail.com",600000);

    employers.add(one);
    employers.add(two);
    employers.add(three);

    modelMap.addAttribute("empList",employers);

    return "employerList";
}

в Jsp:

employerList.jsp

<c:forEach items="${empList}" var="employee">
    <tr>
        <td>Employee ID: <c:out value="${employee.id}"/></td>
        <td>Employee Pass: <c:out value="${employee.name}"/></td>  
    </tr>
</c:forEach>

, если вы хотите предыдущую карту, то сделайте следующее: (здесьв ключе карты находится фактический объект, поэтому вам необходимо получить доступ к ключу)

 <c:forEach var="empl" items="${empList}">

         <li>${empl.key.id}</li>
            <li>${empl.key.name}</li>
            <li>${empl.key.email}</li>

    </c:forEach>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...