You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by bu...@apache.org on 2021/01/30 19:20:59 UTC

svn commit: r1070727 [2/2] - in /websites/production/tapestry/content: autoloading-modules.html cache/main.pageCache configuration.html functional-flows.html introduction.html supported-environments-and-versions.html type-coercion.html

Modified: websites/production/tapestry/content/supported-environments-and-versions.html
==============================================================================
--- websites/production/tapestry/content/supported-environments-and-versions.html (original)
+++ websites/production/tapestry/content/supported-environments-and-versions.html Sat Jan 30 19:20:59 2021
@@ -142,7 +142,7 @@
             
             <!-- /// Content Start -->
             <div id="content">
-                            <div id="ConfluenceContent"><p>Tapestry is compatible with a wide range of app servers, Java versions, and open source libraries. Not all combinations are known to work, however.</p><p>Note: blanks in the support matrix tables below do NOT indicate incompatibility. They are just documentation gaps.</p><p>If you know of any other known compatibilities or incompatibilities, please add a comment at the bottom of this page, or on the&#160;<a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=85469052">Tapestry Users mailing list</a> mailing list.</p><h2 id="SupportedEnvironmentsandVersions-Java&amp;ServletAPIVersions">Java &amp; Servlet API Versions</h2><div class="table-wrap"><table class="table table-bordered table-responsive"><colgroup span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"></colgroup><tbody><tr><th colspan="1" row
 span="1" class="confluenceTh">Tapestry Version &#8594;</th><th colspan="1" rowspan="1" class="confluenceTh">5.5</th><th colspan="1" rowspan="1" class="confluenceTh">5.4</th><th colspan="1" rowspan="1" class="confluenceTh">5.3.8</th><th colspan="1" rowspan="1" class="confluenceTh">5.3.0 - 5.3.7</th><th colspan="1" rowspan="1" class="confluenceTh">5.2</th><th colspan="1" rowspan="1" class="confluenceTh">5.1</th><th colspan="1" rowspan="1" class="confluenceTh">5.0.10</th><th colspan="1" rowspan="1" class="confluenceTh">5.0.8</th><th colspan="1" rowspan="1" class="confluenceTh">5.0</th><th colspan="1" rowspan="1" class="confluenceTh">4.1</th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Java JRE</td><td colspan="1" rowspan="1" class="confluenceTd">8-12</td><td colspan="1" rowspan="1" class="confluenceTd">7, 8<sup>1</sup></td><td colspan="1" rowspan="1" class="confluenceTd">6 - 8<sup>1,2</sup></td><td colspan="1" rowspan="1" class="confluenceTd">6, 7</td><td colspan="1" rowsp
 an="1" class="confluenceTd">5, 6</td><td colspan="1" rowspan="1" class="confluenceTd">5, 6</td><td colspan="1" rowspan="1" class="confluenceTd">5, 6</td><td colspan="1" rowspan="1" class="confluenceTd">5, 6</td><td colspan="1" rowspan="1" class="confluenceTd">5, 6</td><td colspan="1" rowspan="1" class="confluenceTd">1.4, 5, 6</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Servlet API</td><td colspan="1" rowspan="1" class="confluenceTd">3.0+</td><td colspan="1" rowspan="1" class="confluenceTd">2.5+</td><td colspan="1" rowspan="1" class="confluenceTd">2.5+</td><td colspan="1" rowspan="1" class="confluenceTd">2.5+</td><td colspan="1" rowspan="1" class="confluenceTd">2.4+<sup>3</sup></td><td colspan="1" rowspan="1" class="confluenceTd">2.4+<sup>3</sup></td><td colspan="1" rowspan="1" class="confluenceTd">2.4+<sup>3</sup></td><td colspan="1" rowspan="1" class="confluenceTd">2.4+<sup>3</sup></td><td colspan="1" rowspan="1" class="confluenceTd">2.4+<sup>3</sup></td><td colsp
 an="1" rowspan="1" class="confluenceTd">2.2-2.3</td></tr></tbody></table></div><p class="confluence-link"><sup class="confluence-link">1</sup> Java 9 or above requires Tapestry 5.5.0 or newer. See&#160;<a class="external-link" href="https://issues.apache.org/jira/browse/TAP5-2588"><span class="confluence-link">TAP5-2588</span></a>.</p><p><sup>2</sup> For using Tapestry 5.3.8 with Java 8 see <a href="release-notes-538.html">Release Notes 5.3.8</a></p><p><sup>3</sup> Servlet API 2.5 requires JDK 1.5+</p><h2 id="SupportedEnvironmentsandVersions-AppServers">App Servers</h2><div class="table-wrap"><table class="table table-bordered table-responsive"><colgroup span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"></colgroup><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh">Tapestry Version &#8594;</th><th colspan="1" rowspan="1" class="confluenceTh">5.5</th><th colspan="1
 " rowspan="1" class="confluenceTh">5.4</th><th colspan="1" rowspan="1" class="confluenceTh">5.3.8</th><th colspan="1" rowspan="1" class="confluenceTh">5.3.0 - 5.3.7</th><th colspan="1" rowspan="1" class="confluenceTh">5.2</th><th colspan="1" rowspan="1" class="confluenceTh">5.1</th><th colspan="1" rowspan="1" class="confluenceTh">5.0.10</th><th colspan="1" rowspan="1" class="confluenceTh">5.0.8</th><th colspan="1" rowspan="1" class="confluenceTh">5.0</th><th colspan="1" rowspan="1" class="confluenceTh">4.1</th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Apache Tomcat</td><td colspan="1" rowspan="1" class="confluenceTd">6+</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">6+</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan
 ="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Jetty</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;9</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;7-9</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;6-9</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;6-8</td><td colspan="1" rowspan="1" class="confluenceTd">6-8</td><td colspan="1" rowspan="1" class="confluenceTd">6-8</td><td colspan="1" rowspan="1" class="confluenceTd">6-8</td><td colspan="1" rowspan="1" class="confluenceTd">6-8</td><td colspan="1" rowspan="1" class="confluenceTd">6-8</td><td colspan="1" rowspan="1" class="confluenceTd">6-7</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Glassfish</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" ro
 wspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">2.1</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Apache TomEE</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" row
 span="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">JBoss EAP</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">4.2.3</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">4+</td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Wildfly/JBoss AS</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"
 ></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Heroku</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Google App Engine</td><td colspan="1" rowspan="1" clas
 s="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">+</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr></tbody></table></div><h2 id="SupportedEnvironmentsandVersions-Libraries">Libraries</h2><p>These are the library versions known to work (and, in some cases, bundled with Tapestry). Unless otherwise noted, adjacent versions will often work fine as well.</p><div class="table-wrap"><table class="table table-bordered table-responsive"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh">Tapestry Version &#8594;</th><th colspan="1" rowspan="1" class="confluenceTh">5.5</th><th 
 colspan="1" rowspan="1" class="confluenceTh">5.4.1</th><th colspan="1" rowspan="1" class="confluenceTh">5.4</th><th colspan="1" rowspan="1" class="confluenceTh">5.3.8</th><th colspan="1" rowspan="1" class="confluenceTh">5.3.7</th><th colspan="1" rowspan="1" class="confluenceTh">5.3.3-5.3.6</th><th colspan="1" rowspan="1" class="confluenceTh">5.3.2</th><th colspan="1" rowspan="1" class="confluenceTh">5.3 - 5.3.1</th><th colspan="1" rowspan="1" class="confluenceTh">5.2.1</th><th colspan="1" rowspan="1" class="confluenceTh">5.2</th><th colspan="1" rowspan="1" class="confluenceTh">5.1</th><th colspan="1" rowspan="1" class="confluenceTh">5.0.16</th><th colspan="1" rowspan="1" class="confluenceTh">5.0.10</th><th colspan="1" rowspan="1" class="confluenceTh">5.0.8</th><th colspan="1" rowspan="1" class="confluenceTh">5.0</th><th colspan="1" rowspan="1" class="confluenceTh">4.1</th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Hibernate</td><td colspan="1" rowspan="1" class="confl
 uenceTd">5.1.0.Final</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">?-4.3.6</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">3.5.4-3.6.0</td><td colspan="1" rowspan="1" class="confluenceTd">-3.6.0</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">3.3.0+</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">JPA</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan=
 "1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Spring</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspa
 n="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">3.1.0</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">jQuery.js</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">1.12.1</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" ro
 wspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Prototype.js</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">1.7.1</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" r
 owspan="1" class="confluenceTd">1.7</td><td colspan="1" rowspan="1" class="confluenceTd">1.7</td><td colspan="1" rowspan="1" class="confluenceTd">1.7</td><td colspan="1" rowspan="1" class="confluenceTd">1.7</td><td colspan="1" rowspan="1" class="confluenceTd">1.6.1</td><td colspan="1" rowspan="1" class="confluenceTd">1.6.1</td><td colspan="1" rowspan="1" class="confluenceTd">1.6.0.3</td><td colspan="1" rowspan="1" class="confluenceTd">1.6.0.3</td><td colspan="1" rowspan="1" class="confluenceTd">1.6.0.2</td><td colspan="1" rowspan="1" class="confluenceTd">1.6</td><td colspan="1" rowspan="1" class="confluenceTd">1.6</td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Scriptaculous</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">1.9</td><td colspan="1" rowspa
 n="1" class="confluenceTd">1.9</td><td colspan="1" rowspan="1" class="confluenceTd">1.9</td><td colspan="1" rowspan="1" class="confluenceTd">1.9</td><td colspan="1" rowspan="1" class="confluenceTd">1.9</td><td colspan="1" rowspan="1" class="confluenceTd">1.8.2</td><td colspan="1" rowspan="1" class="confluenceTd">1.8.2</td><td colspan="1" rowspan="1" class="confluenceTd">1.8.2</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">1.8.0</td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Bootstrap CSS</td><td colspan="1" rowspan="1" class="confluenceTd">4.3.1, 3.3.6</td><td colspan="1" rowspan="1" class="confluenceTd">3.3.6</td><td colspan="1" rowspan="1" class="confluenceTd">3.0.2</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="
 1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Moment.js</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">2.12.0</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1
 " class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Less4J</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">1.2.1-1.9</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1"
  class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Underscore.js</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">1.3.3</td><td colspan="1" rowspan="1" class="confluenceTd">1.1.7</td><td colspan="1" rows
 pan="1" class="confluenceTd">1.1.7</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr></tbody></table></div></div>
+                            <div id="ConfluenceContent"><p>Tapestry is compatible with a wide range of app servers, Java versions, and open source libraries. Not all combinations are known to work, however.</p><p>Note: blanks in the support matrix tables below do NOT indicate incompatibility. They are just documentation gaps.</p><p>If you know of any other known compatibilities or incompatibilities, please add a comment at the bottom of this page, or on the&#160;<a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=85469052">Tapestry Users mailing list</a> mailing list.</p><h2 id="SupportedEnvironmentsandVersions-Java&amp;ServletAPIVersions">Java &amp; Servlet API Versions</h2><div class="table-wrap"><table class="table table-bordered table-responsive"><colgroup span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"></colgroup><t
 body><tr><th colspan="1" rowspan="1" class="confluenceTh">Tapestry Version &#8594;</th><th colspan="1" rowspan="1" class="confluenceTh">5.7</th><th colspan="1" rowspan="1" class="confluenceTh">5.6</th><th colspan="1" rowspan="1" class="confluenceTh">5.5</th><th colspan="1" rowspan="1" class="confluenceTh">5.4</th><th colspan="1" rowspan="1" class="confluenceTh">5.3.8</th><th colspan="1" rowspan="1" class="confluenceTh">5.3.0 - 5.3.7</th><th colspan="1" rowspan="1" class="confluenceTh">5.2</th><th colspan="1" rowspan="1" class="confluenceTh">5.1</th><th colspan="1" rowspan="1" class="confluenceTh">5.0.10</th><th colspan="1" rowspan="1" class="confluenceTh">5.0.8</th><th colspan="1" rowspan="1" class="confluenceTh">5.0</th><th colspan="1" rowspan="1" class="confluenceTh">4.1</th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Java JRE</td><td colspan="1" rowspan="1" class="confluenceTd">8-14</td><td colspan="1" rowspan="1" class="confluenceTd">8-14</td><td colspan="1" rowspa
 n="1" class="confluenceTd">8-12</td><td colspan="1" rowspan="1" class="confluenceTd">7, 8<sup>1</sup></td><td colspan="1" rowspan="1" class="confluenceTd">6 - 8<sup>1,2</sup></td><td colspan="1" rowspan="1" class="confluenceTd">6, 7</td><td colspan="1" rowspan="1" class="confluenceTd">5, 6</td><td colspan="1" rowspan="1" class="confluenceTd">5, 6</td><td colspan="1" rowspan="1" class="confluenceTd">5, 6</td><td colspan="1" rowspan="1" class="confluenceTd">5, 6</td><td colspan="1" rowspan="1" class="confluenceTd">5, 6</td><td colspan="1" rowspan="1" class="confluenceTd">1.4, 5, 6</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Servlet API</td><td colspan="1" rowspan="1" class="confluenceTd">3.0+</td><td colspan="1" rowspan="1" class="confluenceTd">3.0+</td><td colspan="1" rowspan="1" class="confluenceTd">3.0+</td><td colspan="1" rowspan="1" class="confluenceTd">2.5+</td><td colspan="1" rowspan="1" class="confluenceTd">2.5+</td><td colspan="1" rowspan="1" class="confluen
 ceTd">2.5+</td><td colspan="1" rowspan="1" class="confluenceTd">2.4+<sup>3</sup></td><td colspan="1" rowspan="1" class="confluenceTd">2.4+<sup>3</sup></td><td colspan="1" rowspan="1" class="confluenceTd">2.4+<sup>3</sup></td><td colspan="1" rowspan="1" class="confluenceTd">2.4+<sup>3</sup></td><td colspan="1" rowspan="1" class="confluenceTd">2.4+<sup>3</sup></td><td colspan="1" rowspan="1" class="confluenceTd">2.2-2.3</td></tr></tbody></table></div><p class="confluence-link"><sup class="confluence-link">1</sup> Java 9 or above requires Tapestry 5.5.0 or newer. See&#160;<a class="external-link" href="https://issues.apache.org/jira/browse/TAP5-2588"><span class="confluence-link">TAP5-2588</span></a>.</p><p><sup>2</sup> For using Tapestry 5.3.8 with Java 8 see <a href="release-notes-538.html">Release Notes 5.3.8</a></p><p><sup>3</sup> Servlet API 2.5 requires JDK 1.5+</p><h2 id="SupportedEnvironmentsandVersions-AppServers">App Servers</h2><div class="table-wrap"><table class="table tab
 le-bordered table-responsive"><colgroup span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"></colgroup><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh">Tapestry Version &#8594;</th><th colspan="1" rowspan="1" class="confluenceTh">5.5+</th><th colspan="1" rowspan="1" class="confluenceTh">5.4</th><th colspan="1" rowspan="1" class="confluenceTh">5.3.8</th><th colspan="1" rowspan="1" class="confluenceTh">5.3.0 - 5.3.7</th><th colspan="1" rowspan="1" class="confluenceTh">5.2</th><th colspan="1" rowspan="1" class="confluenceTh">5.1</th><th colspan="1" rowspan="1" class="confluenceTh">5.0.10</th><th colspan="1" rowspan="1" class="confluenceTh">5.0.8</th><th colspan="1" rowspan="1" class="confluenceTh">5.0</th><th colspan="1" rowspan="1" class="confluenceTh">4.1</th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Apache Tomcat</td><td colspan="1" rowspan="1" cl
 ass="confluenceTd">6+</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">6+</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Jetty</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;9</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;7-9</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;6-9</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;6-8</td><td colspan="1" rowspan="1" class="confluenceTd">6-8</td><td colspan="1" rowspan="1" class="confluenceTd">6-8</td><td colspan="1" rowspan="1" class="confluenceTd">6-
 8</td><td colspan="1" rowspan="1" class="confluenceTd">6-8</td><td colspan="1" rowspan="1" class="confluenceTd">6-8</td><td colspan="1" rowspan="1" class="confluenceTd">6-7</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Glassfish</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">2.1</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Apache TomEE</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspa
 n="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">JBoss EAP</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">4.2.3</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">4+</td><td colspan="1" rowspa
 n="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Wildfly/JBoss AS</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Heroku</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td col
 span="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Google App Engine</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">+</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr></tbody></table></div><h2 id="SupportedEnvironmentsandVersions-Libraries">Libraries</h2><p>These are the lib
 rary versions known to work (and, in some cases, bundled with Tapestry). Unless otherwise noted, adjacent versions will often work fine as well.</p><div class="table-wrap"><table class="table table-bordered table-responsive"><colgroup span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"></colgroup><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh">Tapestry Version &#8594;</th><th colspan="1" rowspan="1" class="confluenceTh">5.5+</th><th colspan="1" rowspan="1" class="confluenceTh">5.4.1</th><th colspan="1" rowspan="1" class="confluenceTh">5.4</th><th colspan="1" rowspan="1" class="confluenceTh">5.3.8</th><th colspan="1" rowspan="1" class="confluenceTh">5.3.7</th><th colspan="1" rowspan="1" class="confluenceTh">5.3.3-5.3.6</th><th colspan="1" rowspan="1" class="confluenceTh">5.3.2</th
 ><th colspan="1" rowspan="1" class="confluenceTh">5.3 - 5.3.1</th><th colspan="1" rowspan="1" class="confluenceTh">5.2.1</th><th colspan="1" rowspan="1" class="confluenceTh">5.2</th><th colspan="1" rowspan="1" class="confluenceTh">5.1</th><th colspan="1" rowspan="1" class="confluenceTh">5.0.16</th><th colspan="1" rowspan="1" class="confluenceTh">5.0.10</th><th colspan="1" rowspan="1" class="confluenceTh">5.0.8</th><th colspan="1" rowspan="1" class="confluenceTh">5.0</th><th colspan="1" rowspan="1" class="confluenceTh">4.1</th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Hibernate</td><td colspan="1" rowspan="1" class="confluenceTd">5.1.0.Final</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">?-4.3.6</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></
 td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">3.5.4-3.6.0</td><td colspan="1" rowspan="1" class="confluenceTd">-3.6.0</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">3.3.0+</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">JPA</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="conflu
 enceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Spring</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">3.1.0</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceT
 d"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">jQuery.js</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">1.12.1</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd
 "></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Prototype.js</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">1.7.1</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">1.7</td><td colspan="1" rowspan="1" class="confluenceTd">1.7</td><td colspan="1" rowspan="1" class="confluenceTd">1.7</td><td colspan="1" rowspan="1" class="confluenceTd">1.7</td><td colspan="1" rowspan="1" class="confluenceTd">1.6.1</td><td colspan="1" rowspan="1" class="confluenceTd">1.6.1</td><td colspan="1" rowspan=
 "1" class="confluenceTd">1.6.0.3</td><td colspan="1" rowspan="1" class="confluenceTd">1.6.0.3</td><td colspan="1" rowspan="1" class="confluenceTd">1.6.0.2</td><td colspan="1" rowspan="1" class="confluenceTd">1.6</td><td colspan="1" rowspan="1" class="confluenceTd">1.6</td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Scriptaculous</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">1.9</td><td colspan="1" rowspan="1" class="confluenceTd">1.9</td><td colspan="1" rowspan="1" class="confluenceTd">1.9</td><td colspan="1" rowspan="1" class="confluenceTd">1.9</td><td colspan="1" rowspan="1" class="confluenceTd">1.9</td><td colspan="1" rowspan="1" class="confluenceTd">1.8.2</td><td colspan="1" rowspan="1" class="confluenceTd">1.8.2</td><td colspan="1" rowspan="1" c
 lass="confluenceTd">1.8.2</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">1.8.0</td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Bootstrap CSS</td><td colspan="1" rowspan="1" class="confluenceTd">4.3.1, 3.3.6</td><td colspan="1" rowspan="1" class="confluenceTd">3.3.6</td><td colspan="1" rowspan="1" class="confluenceTd">3.0.2</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td>
 <td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Moment.js</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">2.12.0</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><
 td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Less4J</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">1.2.1-1.9</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><t
 d colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Underscore.js</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd">1.3.3</td><td colspan="1" rowspan="1" class="confluenceTd">1.1.7</td><td colspan="1" rowspan="1" class="confluenceTd">1.1.7</td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenc
 eTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td><td colspan="1" rowspan="1" class="confluenceTd"></td></tr></tbody></table></div></div>
             </div>
             <!-- /// Content End -->
           </div>

Modified: websites/production/tapestry/content/type-coercion.html
==============================================================================
--- websites/production/tapestry/content/type-coercion.html (original)
+++ websites/production/tapestry/content/type-coercion.html Sat Jan 30 19:20:59 2021
@@ -177,7 +177,7 @@
 </div>
 
 
-<p>Although type coercions happen more inside tapestry-core (including <a href="parameter-type-coercion.html">coercions of <span class="confluence-link">component parameters</span></a><span class="confluence-link">&#160;</span>), they may also happen inside tapestry-ioc, such as when injecting a value, rather than a service, into a builder method.</p><p>Like everything else in Tapestry, type coercions are extensible. At the root is the <a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/TypeCoercer.html">TypeCoercer</a> service. Its configuration consists of a number of <a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/CoercionTuple.html">CoercionTuples</a>. Each tuple defines how to coerce from one type to another. The initial set of coercions is focused primarily on coercions between different numeric types:</p><p><span class="confluence-embedded-file-wrapper"><img cla
 ss="confluence-embedded-image" src="type-coercion.data/type-coercer.png"></span></p><h2 id="TypeCoercion-DefaultTypeCoercions">Default Type Coercions</h2><p>There are a few special coercions related to <code>null</code> there; <code>Object</code> --&gt; <code>List</code> wraps a lone object as a singleton list, we then need <code>null</code> --&gt; <code>List</code> to ensure that <code>null</code> stays <code>null</code> (rather than a singleton list whose lone element is a <code>null</code>).</p><p>Tapestry can <em>interpolate</em> necessary coercions. For example, say it is necessary to coerce a <code>StringBuffer</code> to an <code>Integer</code>; the TypeCoercer service will chain together a series of coercions:</p><ul><li><code>Object</code> --&gt; <code>String</code></li><li><code>String</code> --&gt; <code>Long</code></li><li><code>Long</code> --&gt; <code>Integer</code></li></ul><h2 id="TypeCoercion-Coercingfromnull">Coercing from null</h2><p>Coercing from <code>null</code>
  is special; it is not a spanning search as with the other types. Either there is a specific coercion from <code>null</code> to the desired type, or no coercion takes places (and the coerced value is <code>null</code>).</p><p>The only built-in <code>null</code> coercion is from <code>null</code> to <code>boolean</code> (which is always false).</p><h2 id="TypeCoercion-ListofCoercions">List of Coercions</h2><p>As of Tapestry versions 5.1 and 5.2, the following coercions are available:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<p>Although type coercions happen more inside tapestry-core (including <a href="parameter-type-coercion.html">coercions of <span class="confluence-link">component parameters</span></a><span class="confluence-link">&#160;</span>), they may also happen inside tapestry-ioc, such as when injecting a value, rather than a service, into a builder method.</p><p>Like everything else in Tapestry, type coercions are extensible. At the root is the <a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/TypeCoercer.html">TypeCoercer</a> service. Its configuration consists of a number of <a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/CoercionTuple.html">CoercionTuples</a>&#160;until 5.6.x and a mapped configuration of (CoercionTupe.Key, CoercionTule) from Tapestry 5.7.0 on. Each tuple defines how to coerce from one type to another. The initial set of coercions is focused primarily on c
 oercions between different numeric types:</p><p></p><p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" src="type-coercion.data/type-coercer.png"></span></p><h2 id="TypeCoercion-DefaultTypeCoercions">Default Type Coercions</h2><p>There are a few special coercions related to <code>null</code> there; <code>Object</code> --&gt; <code>List</code> wraps a lone object as a singleton list, we then need <code>null</code> --&gt; <code>List</code> to ensure that <code>null</code> stays <code>null</code> (rather than a singleton list whose lone element is a <code>null</code>).</p><p>Tapestry can <em>interpolate</em> necessary coercions. For example, say it is necessary to coerce a <code>StringBuffer</code> to an <code>Integer</code>; the TypeCoercer service will chain together a series of coercions:</p><ul><li><code>Object</code> --&gt; <code>String</code></li><li><code>String</code> --&gt; <code>Long</code></li><li><code>Long</code> --&gt; <code>Integer</c
 ode></li></ul><h2 id="TypeCoercion-Coercingfromnull">Coercing from null</h2><p>Coercing from <code>null</code> is special; it is not a spanning search as with the other types. Either there is a specific coercion from <code>null</code> to the desired type, or no coercion takes places (and the coerced value is <code>null</code>).</p><p>The only built-in <code>null</code> coercion is from <code>null</code> to <code>boolean</code> (which is always false).</p><h2 id="TypeCoercion-ListofCoercions">List of Coercions</h2><p>As of Tapestry versions 5.1 and 5.2, the following coercions are available:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <pre><code class="language-java">Double --&gt; Float
 Float --&gt; Double
 Long --&gt; Boolean
@@ -232,7 +232,20 @@ org.apache.tapestry5.ioc.util.TimeInterv
 org.apache.tapestry5.runtime.ComponentResourcesAware --&gt; org.apache.tapestry5.ComponentResources
 short[] --&gt; java.util.List
 </code></pre>
-</div></div><h2 id="TypeCoercion-ContributingNewCoercions">Contributing New Coercions</h2><p>TypeCoercer is extensible; you may add new coercions as desired. For example, let's say you have a <code>Money</code> type that represents an amount of some currency, and you want to be able to convert from <code>BigDecimal</code> to <code>Money</code>. Further, let's assume that <code>Money</code> has a constructor that accepts a <code>BigDecimal</code> as its parameter. We'll use a little Tapestry IOC configuration jujitsu to inform the TypeCoercer about this coercion.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>AppModule.java (partial)</b></div><div class="codeContent panelContent pdl">
+</div></div><h2 id="TypeCoercion-ContributingNewCoercions">Contributing New Coercions</h2><p>TypeCoercer is extensible; you may add new coercions as desired. For example, let's say you have a <code>Money</code> type that represents an amount of some currency, and you want to be able to convert from <code>BigDecimal</code> to <code>Money</code>. Further, let's assume that <code>Money</code> has a constructor that accepts a <code>BigDecimal</code> as its parameter. We'll use a little Tapestry IOC configuration jujitsu to inform the TypeCoercer about this coercion.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>AppModule (partial, Tapestry 5.7.0+)</b></div><div class="codeContent panelContent pdl">
+<pre><code class="language-java">public static void contributeTypeCoercer(MappedConfiguration&lt;CoercionTuple.Key, CoercionTuple&gt; configuration)
+{
+    Coercion&lt;BigDecimal, Money&gt; coercion = new Coercion&lt;BigDecimal, Money&gt;()
+    {
+        public Money coerce(BigDecimal input)
+        {
+           return new Money(input);
+        }
+    };
+    CoercionTuple tuple = new CoercionTuple&lt;BigDecimal, Money&gt;(BigDecimal.class, Money.class, coercion);
+    configuration.add(tuple.getKey(), tuple));     
+}</code></pre>
+</div></div><p></p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>AppModule.java (partial, before Tapestry 5.7.0)</b></div><div class="codeContent panelContent pdl">
 <pre><code class="language-java">public static void contributeTypeCoercer(Configuration&lt;CoercionTuple&gt; configuration)
 {
     Coercion&lt;BigDecimal, Money&gt; coercion = new Coercion&lt;BigDecimal, Money&gt;()
@@ -246,7 +259,7 @@ short[] --&gt; java.util.List
     configuration.add(new CoercionTuple&lt;BigDecimal, Money&gt;(BigDecimal.class, Money.class, coercion));     
 }</code></pre>
 </div></div><p>Further, since TypeCoercer knows how to convert <code>Double</code> to <code>BigDecimal</code>, or even <code>Integer</code> (to <code>Long</code> to <code>Double</code>) to <code>BigDecimal</code>, all of those coercions would work as well.</p><p>When creating a coercion from <code>null</code>, use <code>Void.class</code> as the source type. For example, the built-in coercion from <code>null</code> to <code>Boolean</code> is implemented as:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>AppModule.java (partial)</b></div><div class="codeContent panelContent pdl">
-<pre><code class="language-java">    configuration.add(new CoercionTuple(void.class, Boolean.class,
+<pre><code class="language-java">    CoercionTuple tuple = new CoercionTuple(void.class, Boolean.class,
         new Coercion&lt;Void, Boolean&gt;()
     {
         public Boolean coerce(Void input)
@@ -255,7 +268,7 @@ short[] --&gt; java.util.List
         }
     }));
 </code></pre>
-</div></div><p>() { public Boolean coerce(Void input) { return false; } })); ]]&gt;</p></div>
+</div></div><p></p><p></p><p></p></div>
             </div>
             <!-- /// Content End -->
           </div>