https://bz.apache.org/bugzilla/show_bug.cgi?id=63898
Bug ID: 63898
Summary: JSP EL generation is wrong when using newer version of
Java 1.8 & tag class uses method overloading and
isELIgnored="false
Product: Tomcat 9
Version: 9.0.x
Hardware: PC
OS: All
Status: NEW
Severity: regression
Priority: P2
Component: EL
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: -----
JSP EL generation is wrong when using newer version of Java 1.8 & tag class
uses method overloading and isELIgnored="false. Our tag class has an overloaded
method, setValue(String) & setValue(Object). The TLD file defines the tag
attribute as java.lang.Object.
<attribute>
<name>value</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.Object</type>
</attribute>
All versions of tomcat using newer versions of Java 1.8 generate calls to
setValue(String) instead of setValue(Object).
// /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));
Here's an example JSP:
<%@ 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" />
Here's an example tag class
public void setValue(final String value) {
}
public void setValue(final Object value) {
}
If we delete the setValue(String) setter then tomcat generates the correct
setter call. The issue appears when using >= 1.8.0.222.
Adopt jdk standard (1.8.0.222) issue
Oracle jdk shiny new (1.8.0.231) issue
Oracle jdk 4.3.100 style (1.8.0.201) no issue
Adopt jdk older (1.8.0.202) NO ISSUE.
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]