【问题标题】:How to generate dynamic table in a java class from a list如何从列表中生成java类中的动态表
【发布时间】:2015-09-04 09:51:42
【问题描述】:

我正在一个应用程序中工作,我必须在 java 类中创建一个 html 表,并且必须将其保存在数据库中。我在 java 中创建该表,但是如何在该表中生成动态行。使用 3 个列表.我正在付出我所做的,

                              +"Interview LineUp"
                              +" <table border ='1'>"
                              +"<tr>"                           
                              +"<td>Interviewe</td>"
                              +"<td>Timing1</td>"       
                              +"<td>Timing2</td> "                              
                              +"</tr> "
                              +"<tr>"                             
                              +"<td>name</td>"
                              +"<td>timing1</td> "
                              +"<td>timing2</td> "
                              +"</tr> "
                              +"</table>"

所以这是我在 java 类中使用的表,我有 3 个列表,其中包含 3 组信息,例如名称、时间 1、时间 2。现在我希望如果所有列表中有 3 个值,则为 3 行将生成。

列表是

List<String> interviewTimingToFrom1 = Arrays.asList(interviewTime1.split(","));
List<String> interviewTimingToFrom2 = Arrays.asList(interviewTime2.split(","));
List<String> listOfinterviewerName = Arrays.asList(intervierwName.split(","));

就像我在做这个

                          +"<tr>";  
                              for(int k=0;k<listOfinterviewerName .size();k++){
                              +"<td>listOfinterviewerName .get(k)</td>"
                              +}

如何在那个 java 类中做到这一点?有人请帮忙。在此先感谢

【问题讨论】:

  • 我理解你的意思吗,你必须将 HTML 保存在数据库中???
  • 你输入的数据真的很模糊。如果这 3 个列表没有相同数量的值怎么办?
  • @Andreas 是的,你写的 3 个列表肯定会有相同数量的数据
  • @Andreas 你能帮忙吗??
  • 是的,它被称为 for 循环。如果你还不知道 for 循环,你应该在尝试这种复杂的东西之前继续学习 Java。

标签: java html


【解决方案1】:

+"test" 不是有效的 Java 语句。你要添加文本到什么地方?

当以增量方式构建字符串时,您应该始终使用StringBuilder

List<String> interviewTimingToFrom1 = Arrays.asList(interviewTime1.split(","));
List<String> interviewTimingToFrom2 = Arrays.asList(interviewTime2.split(","));
List<String> listOfinterviewerName = Arrays.asList(intervierwName.split(","));

StringBuilder buf = new StringBuilder();
buf.append("<html>" +
           "<body>" +
           "<table>" +
           "<tr>" +
           "<th>Interviewe</th>" +
           "<th>Timing1</th>" +
           "<th>Timing2</th>" +
           "</tr>");
for (int i = 0; i < listOfinterviewerName.size(); i++) {
    buf.append("<tr><td>")
       .append(listOfinterviewerName.get(i))
       .append("</td><td>")
       .append(interviewTimingToFrom1.get(i))
       .append("</td><td>")
       .append(interviewTimingToFrom2.get(i))
       .append("</td></tr>");
}
buf.append("</table>" +
           "</body>" +
           "</html>");
String html = buf.toString();

当然,要防范Cross-site scripting (XSS) 攻击,您应该对这些值进行转义。

【讨论】:

  • 方法 append(String) 未定义其显示的 String 类型
  • 没有关注你。该代码没有在任何地方对字符串执行附加(字符串)。
【解决方案2】:

我对你的问题不是很清楚,但根据我的理解,下面的代码对你有用。

public static void main(String[] args) {

   String s =  ""+"Interview LineUp"
               +" <table border ='1'>"
               +"<tr>"                           
               +"<td>Interviewe</td>"
               +"<td>Timing1</td>"       
               +"<td>Timing2</td> "                              
               +"</tr> "
            ;

    String interviewTime1="11:30,12:30";
    String interviewTime2="13:30,15:00";
    String intervierwName="Adam,Smith";
    List<String> interviewTimingToFrom1 = Arrays.asList(interviewTime1.split(","));
    List<String> interviewTimingToFrom2 = Arrays.asList(interviewTime2.split(","));
    List<String> listOfinterviewerName = Arrays.asList(intervierwName.split(","));
    for(int i=0;i<interviewTimingToFrom1.size();i++)
    {
        s = s.concat( "<tr>"
                +"<td>"+listOfinterviewerName.get(i)+"</td>"
                +"<td>"+interviewTimingToFrom1.get(i)+"</td> "
               +"<td>"+interviewTimingToFrom2.get(i)+"</td> "
               +"</tr> ");
    }
    s=s.concat( "</table>");
    System.out.println(s);
}

【讨论】:

  • @lucifer 这对你有用...如果可行,请投票并接受答案。
  • 在循环中执行String = String.concat(String)(或String += String)对性能不利。在循环中增量构建字符串时始终使用StringBuilder
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
  • 2014-09-19
  • 2014-07-26
  • 2020-10-29
相关资源
最近更新 更多