June 19th, 2009

...now browsing by day

 

Using JSTL Exception Handling in JDev 10.1.2 Portlet

Friday, June 19th, 2009

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>
&nbsp;
</c:otherwise>
</c:choose>
</td>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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>
&nbsp;
</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">&nbsp;</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']}" />&nbsp;</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>&nbsp;</td>
</c:otherwise>
</c:choose>
<td><c:out value="${Row['Stop']}" />&nbsp;</td>
<td align=center><c:out value="${Row['Am']}" />&nbsp;</td>
<td align=center><c:out value="${Row['Pm']}" />&nbsp;</td>
<c:choose>
<c:when test="${now ge startdate}">
<td align=center>&nbsp;</td>
</c:when>
<c:when test="${now lt startdate}">
<td align=center style="color: blue;">
<c:out value="${startdatedisplay}" />&nbsp;
</td>
</c:when>
<c:otherwise>
<td align=center><c:out value="${startdatedisplay}" />&nbsp;</td>
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${now lt stopdate}">
<td align=center style="color: red;">
<c:out value="${stopdatedisplay}" />&nbsp;
</td>
</c:when>
<c:otherwise>
<td align=center><c:out value="${stopdatedisplay}" />&nbsp;</td>
</c:otherwise>
</c:choose>
</tr>
</c:forEach>
</tbody>
</table>

<br />
<br />