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 <a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=85469052">Tapestry Users mailing list</a> mailing list.</p><h2 id="SupportedEnvironmentsandVersions-Java&ServletAPIVersions">Java & 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 →</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 <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 →</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"> 9</td><td colspan="1" rowspan="1" class="confluenceTd"> 7-9</td><td colspan="1" rowspan="1" class="confluenceTd"> 6-9</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-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 →</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 <a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=85469052">Tapestry Users mailing list</a> mailing list.</p><h2 id="SupportedEnvironmentsandVersions-Java&ServletAPIVersions">Java & 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 →</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 <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 →</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"> 9</td><td colspan="1" rowspan="1" class="confluenceTd"> 7-9</td><td colspan="1" rowspan="1" class="confluenceTd"> 6-9</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-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 →</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"> </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> --> <code>List</code> wraps a lone object as a singleton list, we then need <code>null</code> --> <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> --> <code>String</code></li><li><code>String</code> --> <code>Long</code></li><li><code>Long</code> --> <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"> </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> 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> --> <code>List</code> wraps a lone object as a singleton list, we then need <code>null</code> --> <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> --> <code>String</code></li><li><code>String</code> --> <code>Long</code></li><li><code>Long</code> --> <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 --> Float
Float --> Double
Long --> Boolean
@@ -232,7 +232,20 @@ org.apache.tapestry5.ioc.util.TimeInterv
org.apache.tapestry5.runtime.ComponentResourcesAware --> org.apache.tapestry5.ComponentResources
short[] --> 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<CoercionTuple.Key, CoercionTuple> configuration)
+{
+ Coercion<BigDecimal, Money> coercion = new Coercion<BigDecimal, Money>()
+ {
+ public Money coerce(BigDecimal input)
+ {
+ return new Money(input);
+ }
+ };
+ CoercionTuple tuple = new CoercionTuple<BigDecimal, Money>(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<CoercionTuple> configuration)
{
Coercion<BigDecimal, Money> coercion = new Coercion<BigDecimal, Money>()
@@ -246,7 +259,7 @@ short[] --> java.util.List
configuration.add(new CoercionTuple<BigDecimal, Money>(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<Void, Boolean>()
{
public Boolean coerce(Void input)
@@ -255,7 +268,7 @@ short[] --> java.util.List
}
}));
</code></pre>
-</div></div><p>() { public Boolean coerce(Void input) { return false; } })); ]]></p></div>
+</div></div><p></p><p></p><p></p></div>
</div>
<!-- /// Content End -->
</div>