用Java创建HTML表

时间:2018-07-13 03:01:11

标签: java html

当我使用HTML在Java中创建表时,我的代码有问题。这是我的代码:

for(int station : stations){
   String rowcolor = null;
   String stationnum = Integer.toString(station);
   String lastDate = pollData(station); //CALL GET LAST 
   String status = determineStatus(station, lastDate); // CALL DETERMINE STATUS

    switch(status){
       case " ONLINE":
           rowcolor = (" <tr bgcolor=\"#5FFF33\">");
           break;
       case " OFFLINE":
           rowcolor = (" <tr bgcolor=\"red\">");
           break;
       case " DELAYED":
           rowcolor = (" <tr bgcolor=\"yellow\">");
           break;
   }

    out.write("<html>" +
       "<body>" +
       "<table border ='1'>" +
       "<tr>" +
       "<td>Station Number</td>" +
       "<td>Station Name</td>" +
       "<td>Status</td>" +
       "<td>As of Date</td>" +
       "</tr>");

    out.write(rowcolor + "<td>");
    out.write(stationnum);
    out.write("</td><td>");
    out.write(stationnname[id]);
    out.write("</td><td>");
    out.write(status);
    out.write("</td><td>");
    out.write(lastDate);
    out.write("</table>" +
       "</body>" +
       "</html>"); 
     id++; 
    out.close(); 
   }   

   }catch (IOException e) {
   System.err.println(e);
   } 

这是输出:

enter image description here

当我移除out.close();部分时,输出为:

enter image description here

如您所见,图像在创建表时存在问题。某事不正确,但我找不到解决方法。请帮我;预先感谢。

2 个答案:

答案 0 :(得分:3)

看看要写到输​​出缓冲区的内容和位置。

for循环中,您正在编写一个完整的HTML文档(即<html><body>...</body></html>)和一个包含标题行和一个数据行的整个表。

我假设您想做的就是继续将表行写入一个表。为此,请在您的for循环

外部处写上上述标记

out.write("<html><body><table border=\"1\"><thead>" +
        "<tr><td>Station Number</td><td>Station Name</td>" +
        "<td>Status</td><td>As of Date</td></tr></thead><tbody>");
for(int station : stations) {
    // get data, determine rowcolor, etc
    out.write(rowcolor + ... + "</tr>");
}

out.write("</tbody></table></body></html>");
out.close();

答案 1 :(得分:0)

正如Phil所说,out.close();for循环内,您需要将其更改为for循环外,因为如果它在循环内,out将对于第一次迭代将关闭,而对于其他记录将不起作用

for(int station : stations){

}
out.close();