We have a custom tag, FormatDateTag extends
org.apache.taglibs.standard.tag.common.fmt.FormatDateSupport. It’s been
working ok for a number of years under tomcat & Oracle JVM. Now, we are moving
to adoptOpenJDK & we are seeing some differences in how tomcat generation of
JSP to Java classes happens when tomcat is doing the EL evaluation. Here is an
example JSP which shows the issue…
<%@ page language="java" contentType="text/html" isELIgnored="false" %>
<%@ page import="java.util.Date" %>
<%@ taglib uri="/WEB-INF/tld/suitags.tld" prefix="sui" %>
<%
Date chdt = new Date();
request.setAttribute("chdt", chdt);
%>
<sui:formatDate value="${chdt}" type="date" dateStyle="shortfull" />
Looking at the compiled JSP source code under Oracle JVM, we see this…
// /tagUnitTests/sui/formatDate/testCaliHDateTime1.jsp(20,0) name = value
type = java.lang.Object reqTime = true required = true fragment = false
deferredValue = false expectedTypeName = null deferredMethod = false
methodSignature = null
_jspx_th_sui_005fformatDate_005f0.setValue((java.lang.Object)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${chdt}",
java.lang.Object.class, (javax.servlet.jsp.PageContext)_jspx_page_context,
null));
The same source compiled using AdoptOpenJDK, we see this…
// /tagUnitTests/sui/formatDate/ testCaliHDateTime1.jsp(20,0) name = value
type = java.lang.Object reqTime = true required = true fragment = false
deferredValue = false expectedTypeName = null deferredMethod = false
methodSignature = null
_jspx_th_sui_005fformatDate_005f0.setValue((java.lang.String)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${chdt}",
java.lang.String.class, (javax.servlet.jsp.PageContext)_jspx_page_context,
null));
As a workaround, we’re adding calls to <fmt:parseDate> to convert the String
back to a Date. Has anyone run into this? Any ideas we can try to find the
root cause?
Thanks,
Jeff LoBello
Lead Software Engineer
Cerner | www.cerner.com<http://www.cerner.com/>
CONFIDENTIALITY NOTICE This message and any included attachments are from
Cerner Corporation and are intended only for the addressee. The information
contained in this message is confidential and may constitute inside or
non-public information under international, federal, or state securities laws.
Unauthorized forwarding, printing, copying, distribution, or use of such
information is strictly prohibited and may be unlawful. If you are not the
addressee, please promptly delete this message and notify the sender of the
delivery error by e-mail or you may call Cerner's corporate offices in Kansas
City, Missouri, U.S.A at (+1) (816)221-1024.