We have precompiled tags which were compiled under 5.5.35 and don't work under 7.0.34. From my investigation, it appears it's due to an interface change in JspSourceDependent. The return type of getDependants() changed. For us the solution isn't as simple as recompiling for two reasons: we have shipping products which plug into our tomcat based platform and some such products target multiple versions of our platform, some of which are 5.5 based and some are 7.0 based.
Is this a bug? Shouldn't there be backward compatibility for precompiled tags? Is there anything that can be done to get such existing tags working? I'm looking for any guidance on how to move forward in addressing this issue. Here is an example tag that exhibits the problem: <%@taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> <%@tag dynamic-attributes="dynamicAttributes" %> <%@attribute name="id" required="true" rtexprvalue="true" %> <div id="${id}"> <table> <c:forEach var="attribute" items="${dynamicAttributes}"> <tr><th>${attribute.key}</th><td>${attribute.value}</td></tr> </c:forEach> </table> </div> When referenced in a precompiled jsp like this... <sample:javafree id="javafree.tag" randomkey="randomvalue" anotherkey="anothervalue" /> ...and all compiled against 7.0 but used in 7.0 (or 5.5/5.5), the resulting html looks like this: <div id="javafree.tag"> <table> <tbody><tr><th>randomkey</th><td>randomvalue</td></tr> <tr><th>anotherkey</th><td>anothervalue</td></tr> </tbody></table> </div> However when compiled against 5.5 and used in 7.0, the resulting html looks like this: <div id=""> <table> </table> </div>