如何使用JSP和Servlet从String和List <String>的映射动态生成表?

秋冬

我有一个响应对象,其中包含Map的getter和setter-

public class DataResponse {

    private Map<String, List<String>> attributes = new LinkedHashMap<String, List<String>>();

    public Map<String, List<String>> getAttributes() {
        return attributes;
    }

    public void setAttributes(Map<String, List<String>> attributes) {
        this.attributes = attributes;
    }
}

在上述对象中,我有一个Map of String and List<String>在地图中,keys是我的表格标题,value而地图中的是该标题的表格数据。

假设这是地图中的值-

FirstName is the Key in the same Map
DAVID, RON, HELLO are the values in the map as the List for that key.

相似地,

LastName is the Key in the same Map
JOHN, PETER, TOM are the values in the map as the List for the `LastName` key.

然后我的桌子应该像这样

FirstName   LastName
David       JOHN    
RON         PETER   
HELLO       TOM     

我需要动态生成上面的表,就像将dataResponse对象传递到我的JSP页面一样,如下所述-

DataResponse dataResponse = some_code_here;
req.setAttribute("data", dataResponse);
WebUtil.forward(req, resp, this, "/admin/test.jsp");

下面是我在JSP中的表,其中我正在使用上述对象以上述格式生成表

<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="1" style="text-align: center;"> 
 <TR>     
  <c:forEach var="h" items="${data.attributes}">     
     <TH>${h.key}</TH>      
  </c:forEach>
 </TR>
 //iterate again
 <c:forEach var="h" items="${data.attributes}">
   //h.value is ArrayList so we can iterate with c:forEach
  <c:forEach var="headers" items="${h.value}">
   <TR>         
      <TD>${headers}</TD>         
   </TR>
  </c:forEach>
</c:forEach>
</TABLE>    

但是不知何故,我的表格并未按照我在上面的示例中试图显示的方式显示。所有键都正确显示在表标题中,但所有值仅显示在第一列中。

列表的大小对于所有键都是相同的。

任何想法如何做到这一点?

更新:-

<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="1" style="text-align: center;">
    <TR>
        <c:forEach var="h" items="${data.attributes}">
            <TH>${h.key}</TH>
        </c:forEach>
    </TR>
    //iterate again
    <c:forEach var="h" items="${data.attributes}">
        <TR>
            <c:forEach var="headers" items="${h.value}">
                <TD>${headers}</TD>
            </c:forEach>

        </TR>
    </c:forEach>
</TABLE>

这给了我-

FirstName   LastName
David       RON        HELLO
JOHN        PETER      TOM
安尼尔·古达(Anil Gowda)
<%
// Create an ArrayList with test data
ArrayList list = new ArrayList();
Map person1 = new HashMap();
person1.put("name", "A");
person1.put("lastname", "A1";
list.add(person1);
Map person2 = new HashMap();
person2.put("name", "B");
person2.put("lastname", "B1");
list.add(person2);
Map person3 = new HashMap();
person3.put("name", "C");
person3.put("lastname", "");
list.add(person3);
pageContext.setAttribute("persons", list);

%>

<html>
  <head>
<title>Search result: persons</title>
  </head>
  <body bgcolor="white">
  Here are all persons matching your search critera:
<table>
  <TH>Name</th>
  <TH>Id</th>
  <c:forEach items="${persons}" var="current">
    <tr>
      <td><c:out value="${current.name}" /><td>
      <td><c:out value="${current.lastname}" /><td>
    </tr>
  </c:forEach>
</table>

这种方法比较容易,建议使用。如果您仍然希望坚持使用您的代码,则可以使用jsp标记而不是jstl标记来实现您的目标,如下所示

<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="1" style="text-align: center;">
<TR>
    <c:forEach var="h" items="${data.attributes}">
        <TH>${h.key}</TH>
    </c:forEach>
</TR>
//use jsp scriplets to acces both list simultaneoulsy
<% List data= request.getAttribute("data")==null?null:(List) request.getAttribute("data");
 List Names=data.get(0);
 List LastNames=data.get(1);
 for(int i=0;i<Names.length();i++){ %>
      <td><%=Names.get(i)%></td><td><%=LastNames.get(i)%></td>
 <%
      }

 %>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用AutoMapper 3和Entity Framework将Integer映射到String

来自分类Dev

使用String.IsNullOrEmpty(string)和Nhibernate创建动态Linq表达式

来自分类Dev

使用jQuery显示和隐藏动态生成的表元素

来自分类Dev

如何遍历String List的映射(使用迭代器)并使用InputArray的值加载另一个String List?

来自分类Dev

如何清除哈希映射<string,string>值?

来自分类Dev

将<String,HashSet <String >>映射到JSON和漂亮的打印

来自分类Dev

Mockito:如何匹配String和List <String>参数

来自分类Dev

如何在动态生成的表行内添加和操作id

来自分类Dev

如何动态创建表以动态生成表?

来自分类Dev

在List <string>和List <int>之间生成列表保存/建立映射

来自分类Dev

使用JSON在Javascript中生成动态表

来自分类Dev

通过servlet和jsp更新html表

来自分类Dev

如何反转映射<String,List <String >> Flutter中的值?

来自分类Dev

如何获得每个动态生成的表的总和?

来自分类Dev

无法使用Servlet和JSP更新表中的特定记录

来自分类Dev

如何通过映射中的键删除元素,该映射包含char和pair <int,string>

来自分类Dev

如何区分@string和@@ string?

来自分类Dev

如何使用JSP Servlet生成和下载Excel报告

来自分类Dev

在List <string>和List <int>之间生成列表保存/建立映射

来自分类Dev

通过servlet和jsp更新html表

来自分类Dev

如何使用动态生成的表动态添加行

来自分类Dev

如何从 string_1 和 string_2 之间的差异生成 string_3?

来自分类Dev

使用行跨度和循环动态生成包含子表的表

来自分类Dev

List<string> 和 string[] WCF?

来自分类Dev

如何 vuetify 动态生成的 vue 表?

来自分类Dev

使用AngularJS动态生成表中的列

来自分类Dev

如何使用 Jackson 将 JSON 单项从 list<int, String) 映射到 String?

来自分类Dev

如何使用 ObjectMapper 以 Json 格式读取包含 String 和 List<String> 的对象

来自分类Dev

将 List<String> 转换为 Map<String, List<String>> 列表值作为映射键和映射值与空列表 java 8

Related 相关文章

  1. 1

    如何使用AutoMapper 3和Entity Framework将Integer映射到String

  2. 2

    使用String.IsNullOrEmpty(string)和Nhibernate创建动态Linq表达式

  3. 3

    使用jQuery显示和隐藏动态生成的表元素

  4. 4

    如何遍历String List的映射(使用迭代器)并使用InputArray的值加载另一个String List?

  5. 5

    如何清除哈希映射<string,string>值?

  6. 6

    将<String,HashSet <String >>映射到JSON和漂亮的打印

  7. 7

    Mockito:如何匹配String和List <String>参数

  8. 8

    如何在动态生成的表行内添加和操作id

  9. 9

    如何动态创建表以动态生成表?

  10. 10

    在List <string>和List <int>之间生成列表保存/建立映射

  11. 11

    使用JSON在Javascript中生成动态表

  12. 12

    通过servlet和jsp更新html表

  13. 13

    如何反转映射<String,List <String >> Flutter中的值?

  14. 14

    如何获得每个动态生成的表的总和?

  15. 15

    无法使用Servlet和JSP更新表中的特定记录

  16. 16

    如何通过映射中的键删除元素,该映射包含char和pair <int,string>

  17. 17

    如何区分@string和@@ string?

  18. 18

    如何使用JSP Servlet生成和下载Excel报告

  19. 19

    在List <string>和List <int>之间生成列表保存/建立映射

  20. 20

    通过servlet和jsp更新html表

  21. 21

    如何使用动态生成的表动态添加行

  22. 22

    如何从 string_1 和 string_2 之间的差异生成 string_3?

  23. 23

    使用行跨度和循环动态生成包含子表的表

  24. 24

    List<string> 和 string[] WCF?

  25. 25

    如何 vuetify 动态生成的 vue 表?

  26. 26

    使用AngularJS动态生成表中的列

  27. 27

    如何使用 Jackson 将 JSON 单项从 list<int, String) 映射到 String?

  28. 28

    如何使用 ObjectMapper 以 Json 格式读取包含 String 和 List<String> 的对象

  29. 29

    将 List<String> 转换为 Map<String, List<String>> 列表值作为映射键和映射值与空列表 java 8

热门标签

归档