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>


Reply via email to