如何对齐html表格中的单元格

时间:2019-01-15 11:47:11

标签: java

这是我的代码:

  try {

    String name = "";
    String id1 = empid.getEmpId(id);
    System.out.println("id is ===> " + id1);
    Map < Object, Object > map = reporteeservice.getReportees(id1);
    Set < Map.Entry < Object, Object >> s1 = map.entrySet();
    PrintWriter out1 = response.getWriter();
    out1.println("<html><head><style>\r\n" + "table {\r\n" + "  font-family: arial, sans-serif;\r\n" + "  border-collapse: collapse;\r\n" + "  width: 100%;\r\n" + "}\r\n" + "\r\n" + "td, th {\r\n" + "  border: 1px solid #dddddd;\r\n" + "  text-align: left;\r\n" + "  padding: 4px;\r\n" + "}\r\n" + "\r\n" + "</style>\r\n" +
     "</head><center><font size=\"20\"><body><h2>Reportees List</h2></font>" + "<table>\r\n" + "<tr>\r\n" + "<th>Number</th>" + "<th>User Id</th>" + "<th>Username</th>\r\n</center>" + "<body>");


    for (Iterator < Map.Entry < Object, Object >> iterator = s1.iterator(); iterator.hasNext();) {
     Map.Entry < Object, Object > entry = iterator.next();
     Object name1 = entry.getKey();
     Object value = entry.getValue();
     int num = Number++;

     String values = value.toString();
     //System.out.println("returning map");
     PrintWriter out = response.getWriter();
     System.out.println("values ==> " + values);
     request.setAttribute("empid", values);
     out1.println(

      // "<html><body><table>\r\n" +
      // "<tr>\r\n" +
      // "<th>User Id</th>\r\n" +
      // "<th>Username</th>\r\n" +
      "<table>" + "</tr>\r\n" + "<tr>\r\n" + "<td>" + num + "</td>" + "<td>" + values.toUpperCase() + "</td>" + "<td><a href='./Response1?empidVal=" + values + "'>" + name1 + "</a></td>" + "</tr>\r\n" + "</table></body></html>");

    }

实际上,我正在尝试将动态的地图对象(因为它们正在循环中进行迭代)添加到Java Servlet中的html表中。 我的输出是:

  Number                           User Id                     Username
   1              AR12355                                Anagha 
   2            MS12345                         Madhusu S
   3             AT12345                          Amreen Tai

但是我想要以一致的方式输出。 但是我不知道如何将值添加到表中。请帮忙。谢谢

2 个答案:

答案 0 :(得分:0)

您的<table> / </table>开/关不是对称的。

此外,在迭代中永远不要包含</body></html>标签,因为它们在结果中应该是唯一的。

无论如何,您将更容易产生输出,并使用w3c validator对其进行验证,并改进模型,直到获得经过验证的模型为止。

答案 1 :(得分:0)

一个独特的非答案:不要像这样手动生成HMTL。人们在20年前就这样做了,但在2019年确实是个坏主意。

为什么?因为您可以轻松地生成无效的HTML,就像您的代码一样,正如注释所暗示的那样,您在某一时刻正在生成一个封闭的TR标记,而之前没有匹配的开头。

因此,真正的答案是:使用现有工具,例如JSoup。有关更多建议,请参见here