Reputation:
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
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
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