I want to have one date in cell, it means one date in each row
your code will write all dates in single <td>
because your for loop is inside <td>
, to get output as you stated in comment do like:
<table>
<tr>
<th> Dates </th>
<th> Driver</th>
<th> Car </th>
<th> Gas station </th>
</tr>
start loop through your dates
<tr>
<td>print date</td>
<td>print Driver</td>
<td>print Car</td>
<td>print Gas station</td>
</tr>
end loop
</table>
But, better create a custom jsp tag function to do it easily and to keep all java codes inside it instead of jsp like:
create dateDiff.tld
inside ${project_root}/(WebContent OR webapp)/WEB-INF/
like:
<?xml version="1.0" encoding="UTF-8"?>
<taglib>
<tlib-version>1.0</tlib-version>
<short-name>DateDifference TLD</short-name>
<jsp-version>2.1</jsp-version>
<tag>
<name>GetDatesStartEnd</name>
<tag-class>com.jsp.tag.dateArrayListTagHandler.DateArrayListTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>start</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.util.Date</type>
</attribute>
<attribute>
<name>end</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.util.Date</type>
</attribute>
<attribute>
<name>var</name>
<required>true</required>
<type>java.lang.String</type>
</attribute>
</tag>
</taglib>
and DateArrayListTag
class like:
package com.jsp.tag.dateArrayListTagHandler;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
public class DateArrayListTag extends SimpleTagSupport {
private Date start;
private Date end;
private String var;
public void setVar(String var) {
this.var = var;
}
private List<Date> listDates;
public Date getStart() {
return start;
}
public void setStart(Date start) {
this.start = start;
}
public Date getEnd() {
return end;
}
public void setEnd(Date end) {
this.end = end;
}
public List<Date> getListDates() {
return listDates;
}
public void setListDates(List<Date> listDates) {
this.listDates = listDates;
}
@Override
public void doTag() throws JspException, IOException {
System.out.println("startDate: "+start);
System.out.println("endDate: "+end);
Calendar c = GregorianCalendar.getInstance();
listDates = new ArrayList<Date>();
c.setTime(start);
while (!c.getTime().after(end)) {
listDates.add(c.getTime());
c.add(Calendar.DAY_OF_YEAR, 1);
}
getJspContext().setAttribute(var, listDates);
}
}
then, your showdates.jsp will be like:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="/WEB-INF/dateDiff.tld" prefix="dateDiff" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
<style type="text/css">
th,td
{
padding:15px;
}
</style>
</head>
<body>
<fmt:parseDate value="${param.dateA}" var="parsedDateA" pattern="yyyy-MM-dd" />
Date A:<fmt:formatDate pattern="yyyy-MM-dd" type="DATE" value="${parsedDateA}" var="dateA" />${dateA}
<fmt:parseDate value="${param.dateB}" var="parsedDateB" pattern="yyyy-MM-dd" />
Date B:<fmt:formatDate pattern="yyyy-MM-dd" type="DATE" value="${parsedDateB}" var="dateB" />${dateB}
<dateDiff:GetDatesStartEnd end="${parsedDateB}" start="${parsedDateA}" var="resultDates"/>
<table>
<tr>
<th> Dates </th>
<th> Driver</th>
<th> Car </th>
<th> Gas station </th>
</tr>
<c:forEach items="${resultDates}" var="curDt">
<tr>
<td>
<fmt:formatDate pattern="yyyy-MM-dd" type="DATE" value="${curDt}" />
</td>
<td>
Mr alaoui
</td>
<td>
235647-A-23
</td>
<td>
Marrakech,MOROCCO
</td>
</tr>
</c:forEach>
</table>
</body>
</html>
jstl.x.x.jar
and jsp-api.jar
file should be available in your project build-path.