java—在jsp中以对象为键、arraylist为值的表格格式显示Map

44u64gxh  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(482)
  1. MapKey mapKey = new MapKey(reqId, name, status);
  2. LinkedHashMap<Object, List<Dashboard>> map = new LinkedHashMap<>();

mapkey类:

  1. public class MapKey {
  2. private Integer id;
  3. private String name;
  4. private Integer status;
  5. public MapKey(Integer id, String name,Integer status) {
  6. this.id = id;
  7. this.name = name;
  8. this.status=status;
  9. }
  10. public Integer getId() {
  11. return id;
  12. }
  13. public void setId(Integer id) {
  14. this.id = id;
  15. }
  16. //All getters and setters

pojo类:

  1. public class Dashboard {
  2. int requestId;
  3. String loginUser;
  4. int price;
  5. int status;
  6. public int getrequestId() {
  7. return requestId;
  8. }
  9. public void setrequestId(int requestId) {
  10. requestId= requestId;
  11. }
  12. //All getters and setters

jsp代码:

  1. <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="1" style="text-align: center;">
  2. <TR>
  3. <c:forEach var="entry" items="${map}">
  4. <TH>${entry.key}</TH>
  5. </c:forEach>
  6. </TR>
  7. //iterate again
  8. <c:forEach var="entry" items="${map}">
  9. //entry.value is ArrayList so we can iterate with c:forEach
  10. <c:forEach var="headers" items="${entry.value}">
  11. <TR>
  12. <TD>${headers}</TD>
  13. </TR>
  14. </c:forEach>
  15. </c:forEach>
  16. </TABLE>

输入:

  1. MapKey [reqid=123, name=A,status=1]:[Dashboard [reqid=123, NAME=A, PRICE=5,STATUS=2],Dashboard [reqid=123, NAME=A, PRICE=10,STATUS=3],...,..]
  2. MapKey [reqid=456, name=B,status=2]:[Dashboard [reqid=456, NAME=B, PRICE=20,STATUS=3],Dashboard [reqid=456, NAME=B, PRICE=25,STATUS=2],...,..]

预期产量:

  1. 123 A 1 ///Table header
  2. 123 A 5 2
  3. 123 A 10 3
  4. //N no of rows
  5. 456 B 2 ///Table header
  6. 456 B 20 3
  7. 456 B 25 2
  8. //N no of rows

我有一个Map,其中key是一个对象,value是list.arraylist由每个惟一的reqid作为对象的行组成。在Map中,键是我的表头,Map中的值是该表头的表数据。键取决于sql中的数据。它可以根据数据而变化。我想将每个键显示为表头,将其所有相关数据显示为表的行。我在jsp中编写了为每个键创建表的代码。我是java开发的新手,所以这就是我能写的。我需要帮助来实现预期的输出。

oknwwptz

oknwwptz1#

下面给出了一个最小的、可验证的示例:
Jmeter 板.java:

  1. package beans;
  2. public class Dashboard {
  3. int requestId;
  4. String loginUser;
  5. int price;
  6. int status;
  7. public Dashboard(int requestId, String loginUser, int price, int status) {
  8. this.requestId = requestId;
  9. this.loginUser = loginUser;
  10. this.price = price;
  11. this.status = status;
  12. }
  13. public int getRequestId() {
  14. return requestId;
  15. }
  16. public String getLoginUser() {
  17. return loginUser;
  18. }
  19. public int getPrice() {
  20. return price;
  21. }
  22. public int getStatus() {
  23. return status;
  24. }
  25. }

mapkey.java文件:

  1. package beans;
  2. public class MapKey {
  3. private Integer id;
  4. private String name;
  5. private Integer status;
  6. public MapKey(Integer id, String name, Integer status) {
  7. this.id = id;
  8. this.name = name;
  9. this.status = status;
  10. }
  11. public Integer getId() {
  12. return id;
  13. }
  14. public String getName() {
  15. return name;
  16. }
  17. public Integer getStatus() {
  18. return status;
  19. }
  20. }

appcontroller.java:

  1. package servlets;
  2. import java.io.IOException;
  3. import java.util.LinkedHashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import javax.servlet.RequestDispatcher;
  7. import javax.servlet.ServletException;
  8. import javax.servlet.annotation.WebServlet;
  9. import javax.servlet.http.HttpServlet;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12. import beans.Dashboard;
  13. import beans.MapKey;
  14. @WebServlet("/Report")
  15. public class AppController extends HttpServlet {
  16. protected void doGet(HttpServletRequest request, HttpServletResponse response)
  17. throws ServletException, IOException {
  18. doPost(request, response);
  19. }
  20. protected void doPost(HttpServletRequest request, HttpServletResponse response)
  21. throws ServletException, IOException {
  22. populateData(request, response);
  23. RequestDispatcher view = request.getRequestDispatcher("my_page.jsp");
  24. view.forward(request, response);
  25. }
  26. public void populateData(HttpServletRequest request, HttpServletResponse response) {
  27. Map<MapKey, List<Dashboard>> map = new LinkedHashMap<>();
  28. map.put(new MapKey(123, "A", 1), List.of(new Dashboard(123, "A", 5, 2), new Dashboard(123, "A", 10, 3)));
  29. map.put(new MapKey(456, "B", 2), List.of(new Dashboard(456, "B", 20, 3), new Dashboard(456, "B", 25, 2)));
  30. request.setAttribute("reportMap", map);
  31. }
  32. }

我的页面.jsp:

  1. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  2. <html>
  3. <head>
  4. <title>Applicant Information</title>
  5. </head>
  6. <body>
  7. <table border="1">
  8. <c:forEach var="map" items="${reportMap}">
  9. <tr>
  10. <td>
  11. <table border="1">
  12. <tr>
  13. <th>${map.key.id}</th><th>${map.key.name}</th><th>${map.key.status}</th>
  14. </tr>
  15. </table>
  16. </td>
  17. <td>
  18. <table border="1">
  19. <c:forEach var="item" items="${map.value}">
  20. <tr>
  21. <td>${item.requestId}</td><td>${item.loginUser}</td><td>${item.price}</td><td>${item.status}</td>
  22. </tr>
  23. </c:forEach>
  24. </table>
  25. </td>
  26. </tr>
  27. </c:forEach>
  28. </table>
  29. </body>
  30. </html>

输出:

展开查看全部

相关问题