The following is a portlet I recently updated for Oracle Portal. The dates were not formatting properly, so I added a JSTL catch tag. This also uses choice tags which help when you need an else tag after an if tag.
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt"%> <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%> <%@ taglib uri="http://xmlns.oracle.com/adf/ui/jsp/adftags" prefix="adf"%> <%@page contentType="text/html; charset=UTF-8"%> <%@page import="oracle.portal.provider.v2.http.HttpCommonConstants"%> <%@page import="oracle.portal.provider.v2.render.PortletRenderRequest"%> <%@page import="oracle.portal.provider.v2.render.http.HttpPortletRendererUtil"%> <%@page import="oracle.portal.provider.v2.url.UrlUtils"%> <adf:uimodelreference model="htdocs_busroutesportlet_BusRoutesPortletShowPageUIModel" /> <jsp:useBean id="now" class="java.util.Date" /> <script type="text/javascript" src="/BusRoutes2009Portlet/scripts/busroutes2009.js"></script> <c:set var="nowdate" scope="page"><fmt:formatDate value="${now}" /></c:set> <c:set var="school" scope="page" value="" /> <% PortletRenderRequest pReq = (PortletRenderRequest) request.getAttribute(HttpCommonConstants.PORTLET_RENDER_REQUEST); String paramNameSchool = "sch"; String sSQLQuery = ""; String paramNameSubmit = "submit"; String qualParamNameSchool = HttpPortletRendererUtil.portletParameter(pReq, paramNameSchool); String qualParamNameSubmit = HttpPortletRendererUtil.portletParameter(pReq, paramNameSubmit); String sSchoolValue = pReq.getQualifiedParameter(paramNameSchool); String formName = UrlUtils.htmlFormName(pReq,"busroutes_form"); pageContext.setAttribute("school",(Object)sSchoolValue); %> <script> var sSch = <%=sSchoolValue%>; </script> <c:set var="sch"><%=sSchoolValue%></c:set> <form name=<%=formName %> method="POST" action="<%= UrlUtils.htmlFormActionLink(pReq,UrlUtils.PAGE_LINK) %>"> <%= UrlUtils.htmlFormHiddenFields(pReq,UrlUtils.PAGE_LINK, formName) %> Select School and press submit to see schedule. Click on column heading to sort.<br /> <br /> School: <select name="<%=qualParamNameSchool%>" id="ctlSchool"> <option value="0" >-- Select a School --</option> <c:forEach var="row" items="${bindings.SchoolsView1.rangeSet}"> <c:choose> <c:when test="${sch == row.Id}"> <option value="<c:out value="${row.Id}"/>" selected="selected"> <c:set var="mapurl" scope="page"> <c:out value="${row.MapUrl}" /> </c:set> <c:set var="websiteurl" scope="page"> <c:out value="${row.WebsiteUrl}" /> </c:set> <c:set var="schooltype" scope="page"> <c:out value="${row.TypeId}" /> </c:set> </c:when> <c:otherwise> <option value="<c:out value="${row.Id}"/>"> </c:otherwise> </c:choose> <c:out value="${row.School}" /> </option> </c:forEach> </select> <br /> <br /> <input type=submit name="<%= qualParamNameSubmit %>" value="submit" /> </form> <br /> <br /> <table border="0" id="urls"> <tbody> <tr> <td> <c:choose> <c:when test="${not empty mapurl}"> <a href="<c:out value="${mapurl}"/>" target="_blank"> <font class="titleorimageid1siteid53"> Bus Route Map </font> </a> </c:when> <c:otherwise> </c:otherwise> </c:choose> </td> <td> </td> <td> <c:choose> <c:when test="${not empty websiteurl}"> <a href="<c:out value="${websiteurl}"/>" target="_blank"> <font class="titleorimageid1siteid53"> School Web Site </font> </a> </c:when> <c:otherwise> </c:otherwise> </c:choose> </td> </tr> </tbody> </table> <br /> <br /> <c:set var="vo" scope="page" value="${bindings.BRView_2009_1.viewObject}" /> <% try { Object o = pageContext.getAttribute("vo"); oracle.jbo.ViewObject vo = (oracle.jbo.ViewObject)o; String sWhereClause = "SCHOOL_ID = " sSchoolValue " "; vo.setWhereClause(sWhereClause); sSQLQuery = vo.getQuery(); vo.executeQuery(); System.out.println("Query: " vo.getQuery()); System.out.println("sSchoolValue: " sSchoolValue); } catch (Exception e) { System.out.println("Error:" e.getMessage()); System.out.println("sSchoolValue = " sSchoolValue); } %> <br /> <br /> <table id="example" class="tablesorter" border="1" width="100%"> <thead> <tr> <th style="text-align: center"><c:out value="Route" /></th> <c:choose> <c:when test="${schooltype == 3}"> <th style="text-align: center"><c:out value="Route Animal" /></th> </c:when> <c:otherwise> <th style="text-align: center"> </th> </c:otherwise> </c:choose> <th><c:out value="Stop" /></th> <th style="text-align: center"><c:out value="AM" /></th> <th style="text-align: center"><c:out value="PM" /></th> <th style="text-align: center"><c:out value="Start Date" /></th> <th style="text-align: center"><c:out value="Stop Date" /></th> </tr> </thead> <tbody> <c:forEach var="Row" items="${bindings.BRView_2009_1.rangeSet}" > <c:catch var="errorvalue"> <fmt:parseDate value="${Row['StartServiceDate']}" var="startdate" pattern="MM-dd-yyyy" /> <fmt:parseDate value="${Row['StopServiceDate']}" var="stopdate" pattern="MM-dd-yyyy" /> </c:catch> <c:if test="${not empty startdate}"> <c:set var="startdatedisplay" scope="page"> <fmt:formatDate value="${startdate}" /> </c:set> </c:if> <c:if test="${not empty stopdate}"> <c:set var="stopdatedisplay" scope="page"> <fmt:formatDate value="${stopdate}" /> </c:set> </c:if> <tr> <td align=center><c:out value="${Row['Route']}" /> </td> <c:choose> <c:when test="${schooltype == 3}"> <td align=center> <img src="someurl.retrieve_image?p_id=<c:out value="${Row['ImageId']}" />" alt="no image" /></td> </c:when> <c:otherwise> <td align=center> </td> </c:otherwise> </c:choose> <td><c:out value="${Row['Stop']}" /> </td> <td align=center><c:out value="${Row['Am']}" /> </td> <td align=center><c:out value="${Row['Pm']}" /> </td> <c:choose> <c:when test="${now ge startdate}"> <td align=center> </td> </c:when> <c:when test="${now lt startdate}"> <td align=center style="color: blue;"> <c:out value="${startdatedisplay}" /> </td> </c:when> <c:otherwise> <td align=center><c:out value="${startdatedisplay}" /> </td> </c:otherwise> </c:choose> <c:choose> <c:when test="${now lt stopdate}"> <td align=center style="color: red;"> <c:out value="${stopdatedisplay}" /> </td> </c:when> <c:otherwise> <td align=center><c:out value="${stopdatedisplay}" /> </td> </c:otherwise> </c:choose> </tr> </c:forEach> </tbody> </table> <br /> <br />