user3396201
user3396201

Reputation:

How to make nice table in jsp

I have problem with my table I have one long column and I don't know how to restructure my code to put each resultSet in separate column under the heading. I have try put everything inside one for loop but that gave me only one row I know it will be easier to use dao but when I try to use it I have no result at all and because I have them now I prefer to carry on with this code in my servlet I have:

`           
while(resultSet.next()){
                list.add(resultSet.getString("recording_id"));
                list1.add(resultSet.getString("artist_name"));
                list2.add(resultSet.getString("title"));
                list3.add(resultSet.getString("category"));
                list4.add(resultSet.getString("image_name"));
                list5.add(resultSet.getString("num_tracks"));
                list6.add(resultSet.getString("price"));
                list7.add(resultSet.getString("stock_count"));
            }           
        request.setAttribute("list", list);
        request.setAttribute("list1", list1);
        request.setAttribute("list2", list2);
        request.setAttribute("list3", list3);
        request.setAttribute("list4", list4);
        request.setAttribute("list5", list5);
        request.setAttribute("list6", list6);
        request.setAttribute("list7", list7);`

and in jsp

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ page import="java.util.ArrayList" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<!DOCTYPE html>
<html>
<head>
<link rel='stylesheet' href='./css/Congo.css' type='text/css' />
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
        <TABLE BORDER=1>
            <TR BGCOLOR='#FFAD00'>
                            <TH>1</TH>
                            <TH>2</TH>
                            <TH>3</TH>
                            <TH>4</TH>
                            <TH>5</TH>
                            <TH>6</TH>
                            <TH>7</TH>
                            <TH>8</TH>

        <%
                            ArrayList<String> columns = (ArrayList<String>)request.getAttribute("list");
                            ArrayList<String> columns1 = (ArrayList<String>)request.getAttribute("list1");
                            ArrayList<String> columns2 = (ArrayList<String>)request.getAttribute("list2");
                            ArrayList<String> columns3 = (ArrayList<String>)request.getAttribute("list3");
                            ArrayList<String> columns4 = (ArrayList<String>)request.getAttribute("list4");
                            ArrayList<String> columns5 = (ArrayList<String>)request.getAttribute("list5");
                            ArrayList<String> columns6 = (ArrayList<String>)request.getAttribute("list6");
                            ArrayList<String> columns7 = (ArrayList<String>)request.getAttribute("list7");

            if(columns != null && !columns.isEmpty()){
                for(String columnName: columns ){
                   out.println("<TR>");
                   out.println("<TD>"+columnName+"</TD>");
                   out.println("</TR>");
                }
            }
            if(columns1 != null && !columns1.isEmpty()){
                for(String columnName: columns1 ){
                    out.println("<tr>");

                    out.println("<TD>"+columnName+"</TD>");
                    out.println("</tr>");

                 }
            }

            if(columns2 != null && !columns2.isEmpty()){
                for(String columnName: columns2 ){
                    out.println("<tr>");

                    out.println("<TD>"+columnName+"</TD>");

                    out.println("</tr>");

                 }
            }

            if(columns3 != null && !columns3.isEmpty()){
                for(String columnName: columns3 ){
                    out.println("<tr>");

                    out.println("<TD>"+columnName+"</TD>");
                    out.println("</tr>");

                 }
            }

            out.println("<tr>");
            if(columns4 != null && !columns4.isEmpty()){
                for(String columnName: columns4 ){
                    out.println("<tr>");

                    out.println("<TD>"+columnName+"</TD>");
                    out.println("</tr>");

                 }
            }

            if(columns5 != null && !columns5.isEmpty()){
                for(String columnName: columns5 ){
                    out.println("<tr>");

                    out.println("<TD>"+columnName+"</TD>");
                    out.println("</tr>");

                 }
            }

            out.println("<tr>");
            if(columns6 != null && !columns6.isEmpty()){
                for(String columnName: columns6 ){
                    out.println("<tr>");

                    out.println("<TD>"+columnName+"</TD>");
                    out.println("</tr>");

                 }
            }

            if(columns7 != null && !columns7.isEmpty()){
                for(String columnName: columns7 ){
                    out.println("<tr>");

                    out.println("<TD>"+columnName+"</TD>");
                    out.println("</tr>");

                 }
            }

        %>

</TR>
</TABLE>
</body>
</html>`

If you have any ideas how to do this please share.

Upvotes: 0

Views: 1013

Answers (2)

alizelzele
alizelzele

Reputation: 923

use a list of classes instead of 4 or 5 list(or at least a hashmap)

List<Item> list = ...

in jsp u can go for stringBuffer or even some dirty coding ;)

<table>
<% for (Item item : (List<Item>) request.getAttribute("list") ) { %>
  <td> <%=item.getsomething()%></td>
  ....
<% }%>

using some template engines will make the world much easier. something like thymeleaf maybe.

Upvotes: 0

Anurag Anand
Anurag Anand

Reputation: 498

If you just want your code to work, you can use this.

StringBuffer sb = new StringBuffer();
for(int i=0;i<columns.size();++i){
sb.append("<tr>");
sb.append("<td>");sb.append(columns.get(i); sb.append("</td>");
sb.append("<td>");sb.append(columns1.get(i); sb.append("</td>");
sb.append("<td>");sb.append(columns2.get(i); sb.append("</td>");
sb.append("<td>");sb.append(columns3.get(i); sb.append("</td>");
... // do same with other arraylist
sb.append("</tr>");
}

 out.println(sb.toString());

Upvotes: 1

Related Questions