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 2018/02/18 21:21:20 UTC

svn commit: r1025570 [2/2] - in /websites/production/tapestry/content: ./ cache/

Modified: websites/production/tapestry/content/javascript-modules.html
==============================================================================
--- websites/production/tapestry/content/javascript-modules.html (original)
+++ websites/production/tapestry/content/javascript-modules.html Sun Feb 18 21:21:20 2018
@@ -92,6 +92,15 @@
                 <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>        </div>
 
         <div class="details">
+                        <a  href="typescript.html">TypeScript</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>        </div>
+
+        <div class="details">
                         <a  href="coffeescript.html">CoffeeScript</a>
                 
                         
@@ -197,7 +206,7 @@ $("#helpButton").click(onClickHelp);</pr
     };
   });
 }).call(this);</pre>
-</div></div><div class="confluence-information-macro confluence-information-macro-information"><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>The <code><span>confirm-click </span></code>module is used to raise a modal confirmation dialog when certain buttons are clicked; it is loaded by the <a  class="external-link" href="http://tapestry.apache.org/5.4/apidocs/org/apache/tapestry5/corelib/mixins/Confirm.html">Confirm</a> mixin.</p></div></div><p>This module depends on several other modules:&#160;<code>jquery</code>, <code>t5/core/events</code>, <code>t5/core/dom</code>, and <code>bootstrap/modal</code>. These other modules will have been loaded, and their constructor functions executed, before the <code>confirm-click</code> constructor function is executed. The export of each module is provided as a parameter in the order in which the dependencies are defined.</p><div class="confluenc
 e-information-macro confluence-information-macro-note"><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>With AMD, the JavaScript libraries may be loaded in parallel by the browser (that's the <em>asynchronous</em> part of AMD); RequireJS manages the dependency graph and invokes each function just once, as soon as its dependencies are ready, as libraries are loaded. In some cases, a module may be loaded just for its side effects; such modules will be listed last in the dependency array, and will not have a corresponding parameter in the dependent module's constructor function. In <code>confirm-click</code>, the <code>bootstrap/modal</code> module is loaded for side-effects.</p></div></div><p><code>confirm-click</code> defines a local function, <code>runDialog</code>. It performs some side-effects, attaching event handlers to the body and the document. The module's export is a JavaScri
 pt object containing a function that allows other modules to raise the modal dialog.</p><p>If a module truly exports only a single function and is unlikely to change, then it is acceptable to just return the function itself, not an object containing the function. However, returning an object makes it easier to expand the responsibilities of <code>confirm-click</code> in the future; perhaps to add a <code>dismissDialog</code> function.</p><h2 id="JavaScriptModules-LocationofModules">Location of Modules</h2><p>Modules are stored as a special kind of Tapestry <a  href="javascript-modules.html">asset</a>. On the server, modules are stored on the class path under <code>META-INF/modules</code>. In a typical environment, that means the sources will be in <code>src/main/resources/META-INF/modules</code>.</p><p>Typically, your application will place it's modules directly in this folder. If you are writing a reusable library, you will put modules for that library into a subfolder to prevent n
 aming conflicts. Tapestry's own modules are prefixed with <code>t5/core</code>.</p><p>If you are using the optional&#160;<code><a  href="javascript-modules.html">tapestry-web-resources</a></code> module (that's a server-side module, not an AMD module), then you can write your modules as CoffeeScript files; Tapestry will take care of compiling them to JavaScript as necessary.</p><p>The service <a  class="external-link" href="http://tapestry.apache.org/5.4/apidocs/org/apache/tapestry5/services/javascript/ModuleManager.html">ModuleManager</a> is the central piece of server-side support for modules. It supports&#160;<em>overriding</em> of existing modules by contributing overriding <a  class="external-link" href="http://tapestry.apache.org/5.4/apidocs/org/apache/tapestry5/services/javascript/JavaScriptModuleConfiguration.html">module definitions</a>. This can be useful to <a  class="external-link" href="http://en.wikipedia.org/wiki/Monkey_patch" rel="nofollow">monkey patch</a> an existi
 ng module supplied with Tapestry, or as part of a third-party library.</p><h2 id="JavaScriptModules-LoadingModulesfromTapestryCode">Loading Modules from Tapestry Code</h2><p>Often, you will have a Tapestry page or component that defines client-side behavior; such a component will need to load a module.</p><p>The simplest approach is to use the <a  class="external-link" href="http://tapestry.apache.org/5.4/apidocs/org/apache/tapestry5/annotations/Import.html">Import</a> annotation:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><div class="confluence-information-macro confluence-information-macro-information"><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>The <code><span>confirm-click </span></code>module is used to raise a modal confirmation dialog when certain buttons are clicked; it is loaded by the <a  class="external-link" href="http://tapestry.apache.org/5.4/apidocs/org/apache/tapestry5/corelib/mixins/Confirm.html">Confirm</a> mixin.</p></div></div><p>This module depends on several other modules:&#160;<code>jquery</code>, <code>t5/core/events</code>, <code>t5/core/dom</code>, and <code>bootstrap/modal</code>. These other modules will have been loaded, and their constructor functions executed, before the <code>confirm-click</code> constructor function is executed. The export of each module is provided as a parameter in the order in which the dependencies are defined.</p><div class="confluenc
 e-information-macro confluence-information-macro-note"><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>With AMD, the JavaScript libraries may be loaded in parallel by the browser (that's the <em>asynchronous</em> part of AMD); RequireJS manages the dependency graph and invokes each function just once, as soon as its dependencies are ready, as libraries are loaded. In some cases, a module may be loaded just for its side effects; such modules will be listed last in the dependency array, and will not have a corresponding parameter in the dependent module's constructor function. In <code>confirm-click</code>, the <code>bootstrap/modal</code> module is loaded for side-effects.</p></div></div><p><code>confirm-click</code> defines a local function, <code>runDialog</code>. It performs some side-effects, attaching event handlers to the body and the document. The module's export is a JavaScri
 pt object containing a function that allows other modules to raise the modal dialog.</p><p>If a module truly exports only a single function and is unlikely to change, then it is acceptable to just return the function itself, not an object containing the function. However, returning an object makes it easier to expand the responsibilities of <code>confirm-click</code> in the future; perhaps to add a <code>dismissDialog</code> function.</p><h2 id="JavaScriptModules-LocationofModules">Location of Modules</h2><p>Modules are stored as a special kind of Tapestry <a  href="assets.html">asset</a>. On the server, modules are stored on the class path under <code>META-INF/modules</code>. In a typical environment, that means the sources will be in <code>src/main/resources/META-INF/modules</code>.</p><p>Typically, your application will place it's modules directly in this folder. If you are writing a reusable library, you will put modules for that library into a subfolder to prevent naming confli
 cts. Tapestry's own modules are prefixed with <code>t5/core</code>.</p><p>If you are using the optional&#160;<code><a  href="coffeescript.html">tapestry-web-resources</a></code> module (that's a server-side module, not an AMD module), then you can write your modules as CoffeeScript files (or TypeScript, starting in Tapestry 5.5); Tapestry will take care of compiling them to JavaScript as necessary.</p><p>The service <a  class="external-link" href="http://tapestry.apache.org/5.4/apidocs/org/apache/tapestry5/services/javascript/ModuleManager.html">ModuleManager</a> is the central piece of server-side support for modules. It supports&#160;<em>overriding</em> of existing modules by contributing overriding <a  class="external-link" href="http://tapestry.apache.org/5.4/apidocs/org/apache/tapestry5/services/javascript/JavaScriptModuleConfiguration.html">module definitions</a>. This can be useful to <a  class="external-link" href="http://en.wikipedia.org/wiki/Monkey_patch" rel="nofollow">mo
 nkey patch</a> an existing module supplied with Tapestry, or as part of a third-party library.</p><h2 id="JavaScriptModules-LoadingModulesfromTapestryCode">Loading Modules from Tapestry Code</h2><p>Often, you will have a Tapestry page or component that defines client-side behavior; such a component will need to load a module.</p><p>The simplest approach is to use the <a  class="external-link" href="http://tapestry.apache.org/5.4/apidocs/org/apache/tapestry5/annotations/Import.html">Import</a> annotation:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">@Import(module = "t5/core/confirm-click")
 public class Confirm
 {

Modified: websites/production/tapestry/content/legacy-javascript.html
==============================================================================
--- websites/production/tapestry/content/legacy-javascript.html (original)
+++ websites/production/tapestry/content/legacy-javascript.html Sun Feb 18 21:21:20 2018
@@ -77,7 +77,7 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><div class="confluence-information-macro confluence-information-macro-warning"><p class="title">For Older Versions of Tapestry</p><span class="aui-icon aui-icon-small aui-iconfont-error confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>This page describes JavaScript usage in Tapestry versions up through 5.3.x. For version 5.4 and later, see <a  href="legacy-javascript.html">Legacy JavaScript</a>.</p></div></div><p>&#160;</p><p><strong>JavaScript</strong> is a first-class concept in Tapestry, and sophisticated JavaScript support is provided right out of the box, including rich <a  href="legacy-javascript.html">AJAX support</a>, download optimization, client-side logging, and localization.</p><div class="aui-label" style="float:right" title="Related Articles">
+                <div id="ConfluenceContent"><p>&#160;</p><p>&#160;</p><div class="confluence-information-macro confluence-information-macro-warning"><p class="title">For Older Versions of Tapestry</p><span class="aui-icon aui-icon-small aui-iconfont-error confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p class="confluence-link">This page describes JavaScript usage in Tapestry versions up through 5.3.x. For version 5.4 and later, see <a  href="client-side-javascript.html">Client-Side JavaScript</a>.</p></div></div><p>&#160;</p><p class="confluence-link"><strong>JavaScript</strong> is a first-class concept in Tapestry, and sophisticated JavaScript support is provided right out of the box, including rich <a  href="ajax-and-zones.html">Ajax and Zones</a>, download optimization, client-side logging, and localization.</p><div class="aui-label" style="float:right" title="Related Articles">
 
 
 
@@ -111,6 +111,15 @@
                 <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>        </div>
 
         <div class="details">
+                        <a  href="typescript.html">TypeScript</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>        </div>
+
+        <div class="details">
                         <a  href="coffeescript.html">CoffeeScript</a>
                 
                         
@@ -173,7 +182,7 @@
 </div>
 
 
-<p>In production mode, by default, Tapestry will merge JavaScript libraries, add version numbering, and set a far-future expires header to encourage aggressive browser caching. Starting with version 5.3, Tapestry can also automatically minify (compress) JavaScript libraries when in <a  href="legacy-javascript.html">production mode</a>.</p><p>In addition, as will be described in detail <a  href="legacy-javascript.html">below</a>, Tapestry comes with the <a  class="external-link" href="http://www.prototypejs.org/" rel="nofollow">Prototype</a> and <a  class="external-link" href="http://script.aculo.us/" rel="nofollow">Scriptaculous</a> libraries, or you can easily swap in JQuery using a 3rd-party module.</p><h1 id="LegacyJavaScript-AddingCustomJavaScript">Adding Custom JavaScript</h1><p>When adding your own custom JavaScript or third-party libraries, just follow the strategies below to take advantage of Tapestry's JavaScript support mechanisms.</p><p>The recommended practice in Tapestr
 y is to package up any significant amount of JavaScript as a static JavaScript library, a .js file that can be downloaded to the client. Keep your in-page JavaScript code to a minimum, just the few statements needed to initialize objects and reference methods in the JavaScript libraries.</p><h2 id="LegacyJavaScript-LinkingtoyourJavaScriptlibraries">Linking to your JavaScript libraries</h2><p>Tapestry provides several ways to add a link to a JavaScript library within your page or component. Although you can use direct <code>&lt;script type="text/javascript" src="xxx.js"&gt;&lt;/script&gt;</code> approach, you should only use it for JavaScript that resides outside of your application. For JavaScript within your app, Tapestry provides <em>much</em> better ways to do the same thing. Most users choose the simplest, the @Import annotation approach.</p><div class="navmenu" style="float:right; background:#eee; margin:3px; padding:0 1em">
+<p>In production mode, by default, Tapestry will merge JavaScript libraries, add version numbering, and set a far-future expires header to encourage aggressive browser caching. Starting with version 5.3, Tapestry can also automatically minify (compress) JavaScript libraries when in <a  href="configuration.html">production mode</a>.</p><p>In addition, as will be described in detail <a  href="legacy-javascript.html">below</a>, Tapestry comes with the <a  class="external-link" href="http://www.prototypejs.org/" rel="nofollow">Prototype</a> and <a  class="external-link" href="http://script.aculo.us/" rel="nofollow">Scriptaculous</a> libraries, or you can easily swap in JQuery using a 3rd-party module.</p><h1 id="LegacyJavaScript-AddingCustomJavaScript">Adding Custom JavaScript</h1><p>When adding your own custom JavaScript or third-party libraries, just follow the strategies below to take advantage of Tapestry's JavaScript support mechanisms.</p><p>The recommended practice in Tapestry is
  to package up any significant amount of JavaScript as a static JavaScript library, a .js file that can be downloaded to the client. Keep your in-page JavaScript code to a minimum, just the few statements needed to initialize objects and reference methods in the JavaScript libraries.</p><h2 id="LegacyJavaScript-LinkingtoyourJavaScriptlibraries">Linking to your JavaScript libraries</h2><p>Tapestry provides several ways to add a link to a JavaScript library within your page or component. Although you can use direct <code>&lt;script type="text/javascript" src="xxx.js"&gt;&lt;/script&gt;</code> approach, you should only use it for JavaScript that resides outside of your application. For JavaScript within your app, Tapestry provides <em>much</em> better ways to do the same thing. Most users choose the simplest, the @Import annotation approach.</p><div class="navmenu" style="float:right; background:#eee; margin:3px; padding:0 1em">
 <p><strong>JumpStart Demo:</strong> <br clear="none">
 <a  class="external-link" href="http://jumpstart.doublenegative.com.au/jumpstart/examples/javascript/javascript" rel="nofollow">JavaScript</a> </p></div><h2 id="LegacyJavaScript-Approach1:@Import">Approach 1: @Import</h2><p>Use the @<a  class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Import.html">Import</a> annotation (or @<a  class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/IncludeJavaScriptLibrary.html">IncludeJavaScriptLibrary</a> in Tapestry 5.0 and 5.1) to include links to JavaScript (and CSS) files in your page or component. Tapestry ensures that each such file is only referenced once in your page.</p><div class="sectionColumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="columnMacro"><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>For Tapestry 5.2 and late
 r</b></div><div class="codeContent panelContent pdl">
 <pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">@Import(library={"context:js/jquery.js",
@@ -191,7 +200,7 @@ public class MyComponent
  . . .
 }
 </pre>
-</div></div></div></div></div></div><p>@Import may also be applied to individual methods, in which case the import operation only occurs when the method is invoked.</p><p>Note: When specifying a file to import, you'll often use the <strong>context:</strong> binding prefix to indicate that the file is stored in the web application context, and not on the classpath. Relative paths will be on the classpath, relative to the Java class. See <a  href="legacy-javascript.html">Legacy JavaScript</a> for other binding prefix options.</p><p>Adding the same JavaScript library multiple times does <em>not</em> create duplicate links. The subsequent ones are simply ignored. In this way, each component can add the libraries it needs, without worrying about conflicts with other components.</p><h2 id="LegacyJavaScript-Approach2:JavaScriptSupport">Approach 2: JavaScriptSupport</h2><p>Alternatively, you can use <a  class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapest
 ry5/services/javascript/JavaScriptSupport.html">JavaScriptSupport</a> (for Tapestry 5.2 or later) or <a  class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/RenderSupport.html">RenderSupport</a> (for Tapestry 5.0 and 5.1) to include a JavaScript library in your page or component. JavaScriptSupport and RenderSupport are <a  href="legacy-javascript.html">environmental services</a> that include a number of methods that will be used by components, or by services that are called from components. For example:</p><h3 id="LegacyJavaScript-TheimportJavaScriptLibrarymethod">The <code>importJavaScriptLibrary</code> method</h3><p>The <code>importJavaScriptLibrary</code> method (or <code>addScriptLink</code> for Tapestry 5.0 and 5.1) adds a link to a JavaScript library. A component can inject such a script and pass one or more of assets to this method:</p><div class="sectionColumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="c
 olumnMacro"><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Tapestry 5.2 and later</b></div><div class="codeContent panelContent pdl">
+</div></div></div></div></div></div><p>@Import may also be applied to individual methods, in which case the import operation only occurs when the method is invoked.</p><p>Note: When specifying a file to import, you'll often use the <strong>context:</strong> binding prefix to indicate that the file is stored in the web application context, and not on the classpath. Relative paths will be on the classpath, relative to the Java class. See&#160;<a  href="component-parameters.html">Component Parameters</a> for other binding prefix options.</p><p>Adding the same JavaScript library multiple times does <em>not</em> create duplicate links. The subsequent ones are simply ignored. In this way, each component can add the libraries it needs, without worrying about conflicts with other components.</p><h2 id="LegacyJavaScript-Approach2:JavaScriptSupport">Approach 2: JavaScriptSupport</h2><p>Alternatively, you can use <a  class="external-link" href="http://tapestry.apache.org/current/apidocs/org/ap
 ache/tapestry5/services/javascript/JavaScriptSupport.html">JavaScriptSupport</a> (for Tapestry 5.2 or later) or RenderSupport (for Tapestry 5.0 and 5.1) to include a JavaScript library in your page or component. JavaScriptSupport and RenderSupport are <a  href="legacy-javascript.html">environmental services</a> that include a number of methods that will be used by components, or by services that are called from components. For example:</p><h3 id="LegacyJavaScript-TheimportJavaScriptLibrarymethod">The <code>importJavaScriptLibrary</code> method</h3><p>The <code>importJavaScriptLibrary</code> method (or <code>addScriptLink</code> for Tapestry 5.0 and 5.1) adds a link to a JavaScript library. A component can inject such a script and pass one or more of assets to this method:</p><div class="sectionColumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="columnMacro"><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" st
 yle="border-bottom-width: 1px;"><b>Tapestry 5.2 and later</b></div><div class="codeContent panelContent pdl">
 <pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">  @Inject @Path("context:/js/myeffects.js")
   private Asset myEffects;
 
@@ -282,13 +291,13 @@ Added in 5.3
     &lt;version&gt;${tapestry-release-version}&lt;/version&gt;
 &lt;/dependency&gt;
 </pre>
-</div></div><p>Gradle would be similar, of course. If you aren't using something like Maven or Gradle, you'll have to download the jar and its dependency (com.yahoo.platform.yui: yuicompressor) yourself.</p><p>Minification can be disabled by setting the SymbolConstants.MINIFICATION_ENABLED <a  href="legacy-javascript.html">configuration symbol</a> to false in your application's module class (usually AppModule.java). By default it is enabled when in production mode and disabled otherwise.</p><p>Please test your applications well: the YUI Compressor code can be somewhat finicky about the application server and JDK version.</p><h1 id="LegacyJavaScript-Client-sideLogging">Client-side Logging</h1>
+</div></div><p>Gradle would be similar, of course. If you aren't using something like Maven or Gradle, you'll have to download the jar and its dependency (com.yahoo.platform.yui: yuicompressor) yourself.</p><p>Minification can be disabled by setting the&#160;<a  href="configuration.html">tapestry.enable-minification</a> <span class="confluence-link">configuration symbol</span> to false in your application's module class (usually AppModule.java). By default it is enabled when in production mode and disabled otherwise.</p><p>Please test your applications well: the YUI Compressor code can be somewhat finicky about the application server and JDK version.</p><h1 id="LegacyJavaScript-Client-sideLogging">Client-side Logging</h1>
 
 
 <div class="aui-message aui-message-warning">
 Deprecated since 5.3 |
 &#160;
-</div><p>In versions prior to 5.3, Tapestry uses a modified version of the <a  class="external-link" href="http://www.gscottolson.com/blackbirdjs/" rel="nofollow">Blackbird</a> JavaScript console. The Tapestry object includes three functions: debug, warn and error.</p><p>Each of these functions take a message and an optional pattern; if the pattern is provided, the message is <a  class="external-link" href="http://prototypejs.org/api/string/interpolate" rel="nofollow">interpolated</a> on the pattern. The final message is displayed in the Blackbird console, which will make itself visible automatically.</p><p>In production mode, debug messages will be filtered out (they will not be visible until the user presses F2 to display the console, and then clicks the grayed out icon for debug messages). In development mode, debug messages are not filtered out.</p><p>Example usage:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div><p>In versions prior to 5.3, Tapestry used a modified version of the Blackbird JavaScript console. The Tapestry object includes three functions: debug, warn and error.</p><p>Each of these functions take a message and an optional pattern; if the pattern is provided, the message is interpolated on the pattern. The final message is displayed in the Blackbird console, which will make itself visible automatically.</p><p>In production mode, debug messages will be filtered out (they will not be visible until the user presses F2 to display the console, and then clicks the grayed out icon for debug messages). In development mode, debug messages are not filtered out.</p><p>Example usage:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;"> Tapestry.debug("Field id is #{id}, value is #{value}", field);
 
  Tapestry.error("Server is not available.");
@@ -309,11 +318,11 @@ Deprecated since 5.2 (no replacement) |
 </div></div><p>Then use it somewhere else:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">  new Effect.Fade($(myId), { duration: $T(myid).fadeDuration });
 </pre>
-</div></div><h1 id="LegacyJavaScript-AjaxComponentsandMixins">Ajax Components and Mixins</h1><p>Tapestry provides easy-to-use support for <em>Ajax</em>, the technique of using JavaScript to dynamically updating parts of a web page with content from the server without redrawing the whole page. See <a  href="legacy-javascript.html">Legacy JavaScript</a> for details.</p><h1 id="LegacyJavaScript-Built-inLibraries">Built-in Libraries</h1><p></p><div class="navmenu" style="float:right; width:30%; background:#eee; margin:3px; padding:3px">
+</div></div><h1 id="LegacyJavaScript-AjaxComponentsandMixins">Ajax Components and Mixins</h1><p class="confluence-link">Tapestry provides easy-to-use support for <em>Ajax</em>, the technique of using JavaScript to dynamically updating parts of a web page with content from the server without redrawing the whole page. See&#160;<a  href="ajax-and-zones.html">Ajax and Zones</a> for details.</p><h1 id="LegacyJavaScript-Built-inLibraries">Built-in Libraries</h1><p></p><div class="navmenu" style="float:right; width:30%; background:#eee; margin:3px; padding:3px">
 <p><font color="green"><strong>Alternatives to Prototype</strong></font><br clear="none">
 Tapestry also works well with other JavaScript libraries, such as JQuery and ExtJS:</p>
 <ul><li><strong><a  class="external-link" href="https://github.com/got5/tapestry5-jquery" rel="nofollow">Tapestry5-Jquery module</a></strong> &#8211; Using JQuery <em>instead of</em> Prototype</li><li><a  class="external-link" href="http://wiki.apache.org/tapestry/Tapestry5HowToIntegrateJQuery">Tapestry5HowToIntegrateJQuery</a> &#8211; Using JQuery <em>in addition to</em> Prototype</li><li><a  class="external-link" href="https://issues.apache.org/jira/browse/TAP5-999">TAP5-999</a> tracks work underway to introduce an agnostic tapestry.js layer to allow switching from Prototype to JQuery. See <span class="error">[JavaScript Rewrite]</span> for more info.</li><li><a  class="external-link" href="https://issues.apache.org/jira/browse/TAP5-1364">TAPS-1364</a> lists some starting points for ExtJS integration</li></ul>
-</div>Tapestry comes with the <a  class="external-link" href="http://www.prototypejs.org/" rel="nofollow">Prototype</a> and <a  class="external-link" href="http://script.aculo.us/" rel="nofollow">Scriptaculous</a> libraries ... no extra download is required. Tapestry will automatically link into your pages the prototype.js, scriptaculous.js, and effects.js libraries, as well as the Tapestry library, tapestry.js (which largely consists of support for form input validation). Starting with Tapestry 5.3, <a  class="external-link" href="http://documentcloud.github.com/underscore/" rel="nofollow">Underscore</a> is also included.<h2 id="LegacyJavaScript-PrototypeandScriptaculousVersions">Prototype and Scriptaculous Versions</h2><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Tapestry 5.3.5</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Prototype 1.7.1</p></td><td colspan="1" rowspan="1" class="confluenceTd">
 <p>Scriptaculous 1.9</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Underscore 1.1.7</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Tapestry 5.3+</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Prototype 1.7</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Scriptaculous 1.9</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Underscore 1.1.7</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Tapestry 5.2.6</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Prototype 1.7</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Scriptaculous 1.9</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Tapestry 5.2</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Prototype 1.6.1</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Scriptaculous 1.8.2</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Tapestry 5.1</p></th><td colspan="1" rowspan
 ="1" class="confluenceTd"><p>Prototype 1.6.0.3</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Scriptaculous 1.8.2</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Tapestry 5.0</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Prototype 1.6.0</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Scriptaculous 1.8.0</p></td></tr></tbody></table></div><p>Tapestry uses a modified version of the main Scriptaculous library, scriptaculous.js, with the library's default <a  class="external-link" href="http://wiki.script.aculo.us/scriptaculous/show/Usage" rel="nofollow">autoloading</a> behavior turned off. This lets Tapestry and Tapestry components control which Scriptaculus scripts are loaded, rather than having <em>all</em> of them loaded unnecessarily.</p><p>If you need access to other Scriptaculous libraries, you can provide them as follows:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"
 >
+</div>Tapestry comes with the <a  class="external-link" href="http://www.prototypejs.org/" rel="nofollow">Prototype</a> and <a  class="external-link" href="http://script.aculo.us/" rel="nofollow">Scriptaculous</a> libraries ... no extra download is required. Tapestry will automatically link into your pages the prototype.js, scriptaculous.js, and effects.js libraries, as well as the Tapestry library, tapestry.js (which largely consists of support for form input validation). Starting with Tapestry 5.3, <a  class="external-link" href="http://documentcloud.github.com/underscore/" rel="nofollow">Underscore</a> is also included.<h2 id="LegacyJavaScript-PrototypeandScriptaculousVersions">Prototype and Scriptaculous Versions</h2><p>Tapestry included prototype and scriptaculous in versions prior to Tapestry 5.4. See <a  href="supported-environments-and-versions.html">Supported Environments and Versions</a> for a matrix of prototype and scriptaculous versions supported by Tapestry.</p><p>In v
 ersions before 5.4, Tapestry used a modified version of the main Scriptaculous library, scriptaculous.js, with the library's default <a  class="external-link" href="http://wiki.script.aculo.us/scriptaculous/show/Usage" rel="nofollow">autoloading</a> behavior turned off. This lets Tapestry and Tapestry components control which Scriptaculus scripts are loaded, rather than having <em>all</em> of them loaded unnecessarily.</p><p>If you need access to other Scriptaculous libraries, you can provide them as follows:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">  @Inject @Path("${tapestry.scriptaculous}/dragdrop.js")
   private Asset dragDropLibrary;
 
@@ -326,7 +335,7 @@ Tapestry also works well with other Java
   }
 
 </pre>
-</div></div><p>The Asset is injected, using the ${tapestry.scriptaculous} <a  href="legacy-javascript.html">symbol</a> to reference the location of the Scriptaculous library.</p><p>Even though the dragdrop.js library is stored inside a JAR file, Tapestry ensures that it can be accessed from the client web browser. A Tapestry URL within the virtual folder "/assets" is created; the file will be given a version number (the application version number if not specified more specifically) and will be sent to the browser with a far-future expires header (to encourage the browser to cache the file aggressively).</p><h1 id="LegacyJavaScript-JavaScriptStacks">JavaScript Stacks</h1>
+</div></div><p>The Asset is injected, using the <a  href="configuration.html">tapestry.scriptaculous</a> configuration symbol to reference the location of the Scriptaculous library.</p><p>Even though the dragdrop.js library is stored inside a JAR file, Tapestry ensures that it can be accessed from the client web browser. A Tapestry URL within the virtual folder "/assets" is created; the file will be given a version number (the application version number if not specified more specifically) and will be sent to the browser with a far-future expires header (to encourage the browser to cache the file aggressively).</p><h1 id="LegacyJavaScript-JavaScriptStacks">JavaScript Stacks</h1>
 
 
 
@@ -377,7 +386,7 @@ Added in 5.2
 
 }
 </pre>
-</div></div><p>When your new Stack is created, you have to define it in your AppModule.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>AppModule.java</b></div><div class="codeContent panelContent pdl">
+</div></div><p>When your new Stack is created, you have to define it in your AppModule.</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 class="brush: java; gutter: false; theme: Default" style="font-size:12px;">@Contribute(JavaScriptStackSource.class)
 public static void addMyStack (MappedConfiguration&lt;String, JavaScriptStack&gt; configuration)
 {

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 Sun Feb 18 21:21:20 2018
@@ -67,7 +67,7 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p>Tapestry is compatible with a pretty 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="supported-environments-and-versions.html">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="confluenceTable"><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">Java JRE</td><td colspan="1" rowspan="1" class="confluenceTd">1.8<sup>1</sup></td><td colspan="1" rowspan="1" class="confluenceTd">1.7, 1.8<sup>1</sup></td><td colspan="1" rowspan="1" class="confluenceTd">1.6 - 1.8<sup>1,2</sup></td><td colspan="1" rowspan="1" class="confluenceTd">1.6, 1.7</td><td colspan="1" rowspan="1" class="confluenceTd">1.5, 1.6</td><td colspan="1" rowspan="1" class="confluenceTd">1.5, 1.6</td><td colspan="1" rowspan="1" class="confluenceTd">1.5, 1.6</td><td colspan="1" rowspan="1" class="confluenceTd">1.5, 1
 .6</td><td colspan="1" rowspan="1" class="confluenceTd">1.5, 1.6</td><td colspan="1" rowspan="1" class="confluenceTd">1.4-1.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 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> Tapestry does not yet work with Java 1.9. See&#160;<a  clas
 s="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 1.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="confluenceTable"><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 colspa
 n="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">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">6+</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</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">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">2.1</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="
 1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Apache TomEE</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">JBoss EAP</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">4.2.3</td><td colspan="1" rowspan=
 "1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">4+</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Wildfly/JBoss AS</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceT
 d">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Heroku</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Google App Engine</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160
 ;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">+</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Amazon AWS</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan
 ="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</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="confluenceTable"><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" rows
 pan="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">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">?-4.3.6</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"
 >&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</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">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">3.3.0+</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">JPA</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1
 " rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Spring</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="conflue
 nceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">3.1.0</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">jQuery.js</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">1.12.1</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td cols
 pan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Prototype.js</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">1.7.1</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" cla
 ss="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">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Bootstrap CSS</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</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">&#160;</td><td colspan
 ="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Moment.js</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">2.12.0</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="c
 onfluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Less4J</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">1.2.1-1.9</td><
 td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Underscore.js</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspa
 n="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">1.3.3</td><td colspan="1" rowspan="1" class="confluenceTd">1.17</td><td colspan="1" rowspan="1" class="confluenceTd">1.17</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr></tbody></table></div></div>
+                <div id="ConfluenceContent"><p>Tapestry is compatible with a pretty 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="supported-environments-and-versions.html">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="confluenceTable"><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">Java JRE</td><td colspan="1" rowspan="1" class="confluenceTd">1.8<sup>1</sup></td><td colspan="1" rowspan="1" class="confluenceTd">1.7, 1.8<sup>1</sup></td><td colspan="1" rowspan="1" class="confluenceTd">1.6 - 1.8<sup>1,2</sup></td><td colspan="1" rowspan="1" class="confluenceTd">1.6, 1.7</td><td colspan="1" rowspan="1" class="confluenceTd">1.5, 1.6</td><td colspan="1" rowspan="1" class="confluenceTd">1.5, 1.6</td><td colspan="1" rowspan="1" class="confluenceTd">1.5, 1.6</td><td colspan="1" rowspan="1" class="confluenceTd">1.5, 1
 .6</td><td colspan="1" rowspan="1" class="confluenceTd">1.5, 1.6</td><td colspan="1" rowspan="1" class="confluenceTd">1.4-1.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 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> Tapestry does not yet work with Java 1.9. See&#160;<a  clas
 s="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 1.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="confluenceTable"><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 colspa
 n="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">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">6+</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</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">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">2.1</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="
 1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Apache TomEE</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">JBoss EAP</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">4.2.3</td><td colspan="1" rowspan=
 "1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">4+</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Wildfly/JBoss AS</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceT
 d">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Heroku</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Google App Engine</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160
 ;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">+</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Amazon AWS</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan
 ="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</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="confluenceTable"><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" rows
 pan="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">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">?-4.3.6</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"
 >&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</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">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">3.3.0+</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">JPA</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1
 " rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Spring</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="conflue
 nceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">3.1.0</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">jQuery.js</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">1.12.1</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td cols
 pan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Prototype.js</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">1.7.1</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" cla
 ss="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">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Scriptaculous</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</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" class="confluenceTd">1.8.2</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">1.8.0</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Bootstrap CSS</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</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">&#
 160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Moment.js</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">2.12.0</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" 
 rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Less4J</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenc
 eTd">1.2.1-1.9</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Underscore.js</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><t
 d colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</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">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td></tr></tbody></table></div></div>
       </div>
 
       <div class="clearer"></div>

Added: websites/production/tapestry/content/typescript.html
==============================================================================
--- websites/production/tapestry/content/typescript.html (added)
+++ websites/production/tapestry/content/typescript.html Sun Feb 18 21:21:20 2018
@@ -0,0 +1,210 @@
+<!DOCTYPE html>
+	
+	<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<html>
+<head>
+  <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
+  <meta http-equiv="x-ua-compatible" content="IE=9">
+  <meta name="viewport" content="width=device-width, initial-scale=1">	
+  <title>
+          TypeScript -- Apache Tapestry
+      </title>
+  <link type="text/css" rel="stylesheet" href="/resources/space.css" />
+
+          <link href='/resources/highlighter/styles/shCoreCXF.css' rel='stylesheet' type='text/css' />
+    <link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet' type='text/css' />
+    <script src='/resources/highlighter/scripts/shCore.js' type='text/javascript'></script>
+          <script src='/resources/highlighter/scripts/shBrushXml.js' type='text/javascript'></script>
+        <script>
+      SyntaxHighlighter.defaults['toolbar'] = false;
+      SyntaxHighlighter.all();
+    </script>
+  
+  <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
+
+</head>
+
+<body>
+
+  <div class="wrapper bs">
+
+        <div id="navigation"><div class="nav"><ul class="alternate"><li><a  href="index.html">Home</a></li><li><a  href="getting-started.html">Getting Started</a></li><li><a  href="documentation.html">Documentation</a></li><li><a  href="download.html">Download</a></li><li><a  href="about.html">About</a></li><li><a  class="external-link" href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li><li><a  href="community.html">Community</a></li><li><a  class="external-link" href="http://www.apache.org/security/">Security</a></li><li><a  class="external-link" href="http://www.apache.org/">Apache</a></li><li><a  class="external-link" href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li><li><a  class="external-link" href="http://www.apache.org/foundation/thanks.html">Thanks</a></li></ul></div>
+
+</div>
+
+          <div id="top">
+            <div id="smallbanner"><div class="searchbox" style="float:right;margin: .3em 1em .1em 1em"><span style="color: #999; font-size: 90%">Tapestry docs, issues, wikis &amp; blogs:</span>
+<form enctype="application/x-www-form-urlencoded" method="get" action="https://tapestry.apache.org/search.html">
+  <input type="text" name="q">
+  <input type="submit" value="Search">
+</form>
+
+</div>
+
+
+<div class="emblem" style="float:left"><p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image confluence-external-resource" src="https://tapestry.apache.org/images/tapestry_small.png" data-image-src="https://tapestry.apache.org/images/tapestry_small.png"></span></p></div>
+
+
+<div class="title" style="float:left; margin: 0 0 0 3em"><h1 id="SmallBanner-PageTitle">TypeScript</h1></div>
+
+</div>
+      <div class="clearer"></div>
+      </div>
+
+      <div class="clearer"></div>
+
+      <div id="breadcrumbs">
+                <a href="index.html">Apache Tapestry</a>&nbsp;&gt;&nbsp;<a href="documentation.html">Documentation</a>&nbsp;&gt;&nbsp;<a href="user-guide.html">User Guide</a>&nbsp;&gt;&nbsp;<a href="client-side-javascript.html">Client-Side JavaScript</a>&nbsp;&gt;&nbsp;<a href="typescript.html">TypeScript</a>
+        <a class="edit" title="Edit this page (requires approval -- just ask on the mailing list)" href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=75969698">edit</a>
+      </div>
+
+      <div id="content">
+                <div id="ConfluenceContent"><p><strong>TypeScript</strong> (<a  class="external-link" href="https://en.wikipedia.org/wiki/TypeScript" rel="nofollow">https://en.wikipedia.org/wiki/TypeScript</a>) is a language that compiles down to JavaScript.</p><div class="aui-label" style="float:right" title="Related Articles">
+
+
+
+
+
+
+
+
+<h3>Related Articles</h3>
+
+<ul class="content-by-label"><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  href="typescript.html">TypeScript</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  href="coffeescript.html">CoffeeScript</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  href="client-side-javascript.html">Client-Side JavaScript</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  href="javascript-modules.html">JavaScript Modules</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  href="javascript-faq.html">JavaScript FAQ</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  href="ajax-and-zones.html">Ajax and Zones</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  href="component-cheat-sheet.html">Component Cheat Sheet</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  href="legacy-javascript.html">Legacy JavaScript</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  href="assets.html">Assets</a>
+                
+                        
+                    </div>
+    </li></ul>
+</div>
+
+
+<p><em>Starting with version 5.5,</em> Tapestry can automatically compile your TypeScript code into JavaScript on the fly. This is done with the optional tapestry-webresources module. It is highly recommended for anyone who wants to use TypeScript in their application ... just let Tapestry do the compilation at runtime (with access to Tapestry's full exception reporting capabilities).</p><p>To use the tapestry-webresources module, just add the JAR to your project. For example, if you're using Maven:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>pom.xml (partial)</b></div><div class="codeContent panelContent pdl">
+<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">&lt;dependency&gt;
+    &lt;groupId&gt;org.apache.tapestry&lt;/groupId&gt;
+    &lt;artifactId&gt;tapestry-webresources&lt;/artifactId&gt;
+    &lt;version&gt;${tapestry-release-version}&lt;/version&gt;
+&lt;/dependency&gt;</pre>
+</div></div></div>
+      </div>
+
+      <div class="clearer"></div>
+    
+    <div id="footer">
+            <div id="footer"><p>Apache Tapestry, Tapestry, Apache, the Apache feather logo, and the Apache Tapestry project logo are trademarks of The Apache Software Foundation.<br clear="none">
+</p><p><script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-400821-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script></p><p></p></div>
+    </div>
+
+    <div id="comments_thread"></div>
+    <script type="text/javascript" src="https://comments.apache.org/show_comments.lua?site=tapestry&amp;page=http://tapestry.apache.org/typescript.html" async="true">
+    </script>
+    <noscript>
+      <iframe width="100%" height="500" src="https://comments.apache.org/iframe.lua?site=tapestry&amp;page=http://tapestry.apache.org/typescript.html"></iframe>
+    </noscript>
+
+  </div>
+
+</body>
+</html>