lucifer
lucifer

Reputation: 2327

How to generate dynamic table in a java class from a list

I am working in a application where i have to make an html table in the java class and have to save that in database.I am creating that table in java but the how to generate dynamic row in that table .Using 3 lists.I am giving what i have done,

                              +"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>"

So this is the table i am using in the java class,and i have 3 lists which contains 3 set of information like name,timing1,timing2.Now i want that if there are 3 values in all the lists then 3 rows will be generating.

The lists are

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

Like i am doing this

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

How to do that,in that java class ?? somebody please help .Thanks in advance

Upvotes: 2

Views: 28217

Answers (2)

Droy
Droy

Reputation: 183

I was not so clear about your question, but as per what I understood, the code below will work for you.

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);
}

Upvotes: 0

Andreas
Andreas

Reputation: 159086

+"test" is not a valid Java statement. What are you adding the text to?

When building a String incrementally, you should always use a 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();

Of course, to guard against Cross-site scripting (XSS) attacks, you should escape the values.

Upvotes: 5

Related Questions