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: <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 <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 <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: <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 <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 <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> </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> </p><p> </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> </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><script type="text/javascript" src="xxx.js"></script></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><script type="text/javascript" src="xxx.js"></script></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 <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
<version>${tapestry-release-version}</version>
</dependency>
</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 <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 |
 
-</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 <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> – Using JQuery <em>instead of</em>
Prototype</li><li><a class="external-link"
href="http://wiki.apache.org/tapestry/Tapestry5HowToIntegrateJQuery">Tapestry5HowToIntegrateJQuery</a>
– 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<String,
JavaScriptStack> 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 <a href="supported-environments-and-versions.html">Tapestry Users
mailing list</a> mailing list.</p><h2
id="SupportedEnvironmentsandVersions-Java&ServletAPIVersions">Java &
Servlet API Versions</h2><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh">Tapestry Version →</th><th colspan="1" rowspan="1"
class="confluenceTh">5.5</th><th colspan="1" rowspan="1"
class="confluenceTh">5.4</th><th colspan="1" rowspan="1"
class="confluenceTh">5.3.8</th><th colspan
="1" rowspan="1" class="confluenceTh">5.3.0 - 5.3.7</th><th colspan="1"
rowspan="1" class="confluenceTh">5.2</th><th colspan="1" rowspan="1"
class="confluenceTh">5.1</th><th colspan="1" rowspan="1"
class="confluenceTh">5.0.10</th><th colspan="1" rowspan="1"
class="confluenceTh">5.0.8</th><th colspan="1" rowspan="1"
class="confluenceTh">5.0</th><th colspan="1" rowspan="1"
class="confluenceTh">4.1</th></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">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 <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 →</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"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">6+</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Jetty</td><td colspan="1" rowspan="1"
class="confluenceTd"> 9</td><td colspan="1" rowspan="1"
class="confluenceTd"> 7-9</td><td colspan="1" rowspan="1" class
="confluenceTd"> 6-9</td><td colspan="1" rowspan="1"
class="confluenceTd"> 6-8</td><td colspan="1" rowspan="1"
class="confluenceTd">6-8</td><td colspan="1" rowspan="1"
class="confluenceTd">6-8</td><td colspan="1" rowspan="1"
class="confluenceTd">6-8</td><td colspan="1" rowspan="1"
class="confluenceTd">6-8</td><td colspan="1" rowspan="1"
class="confluenceTd">6-8</td><td colspan="1" rowspan="1"
class="confluenceTd">6-7</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Glassfish</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">2.1</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="
1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Apache TomEE</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">JBoss EAP</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">4.2.3</td><td colspan="1" rowspan=
"1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">4+</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Wildfly/JBoss AS</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceT
d"> </td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td
colspan="1" rowspan="1" class="confluenceTd"> </td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">Heroku</td><td colspan="1"
rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Google App Engine</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> 
;</td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td
colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1"
rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">+</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Amazon AWS</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan
="1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr></tbody></table></div><h2
id="SupportedEnvironmentsandVersions-Libraries">Libraries</h2><p>These are the
library versions known to work (and, in some cases, bundled with Tapestry).
Unless otherwise noted, adjacent versions will often work fine as well.</p><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1"
rowspan="1" class="confluenceTh">Tapestry Version →</th><th colspan="1"
rowspan="1" class="confluenceTh">5.5</th><th colspan="1" rowspan="1"
class="confluenceTh">5.4.1</th><th colspan="1" rowspan="1"
class="confluenceTh">5.4</th><th colspan="1" rowspan="1"
class="confluenceTh">5.3.8</th><th colspan="1" rowspan="1"
class="confluenceTh">5.3.7</th><th colspan="1" rowspan="1"
class="confluenceTh">5.3.3-5.3.6</th><th colspan="1" rowspan="1"
class="confluenceTh">5.3.2</th><th colspan="1" 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"> </td><td colspan="1" rowspan="1"
class="confluenceTd">?-4.3.6</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd"
> </td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td
>colspan="1" rowspan="1" class="confluenceTd">3.5.4-3.6.0</td><td colspan="1"
>rowspan="1" class="confluenceTd">-3.6.0</td><td colspan="1" rowspan="1"
>class="confluenceTd"> </td><td colspan="1" rowspan="1"
>class="confluenceTd">3.3.0+</td><td colspan="1" rowspan="1"
>class="confluenceTd"> </td><td colspan="1" rowspan="1"
>class="confluenceTd"> </td><td colspan="1" rowspan="1"
>class="confluenceTd"> </td><td colspan="1" rowspan="1"
>class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
>class="confluenceTd">JPA</td><td colspan="1" rowspan="1"
>class="confluenceTd"> </td><td colspan="1" rowspan="1"
>class="confluenceTd"> </td><td colspan="1" rowspan="1"
>class="confluenceTd"> </td><td colspan="1" rowspan="1"
>class="confluenceTd"> </td><td colspan="1" rowspan="1"
>class="confluenceTd"> </td><td colspan="1" rowspan="1"
>class="confluenceTd"> </td><td colspan="1
" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Spring</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1" class="conflue
nceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">3.1.0</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">jQuery.js</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">1.12.1</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td cols
pan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1"
rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Prototype.js</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">1.7.1</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1" 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"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Bootstrap CSS</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">3.3.6</td><td colspan="1" rowspan="1"
class="confluenceTd">3.0.2</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan
="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Moment.js</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">2.12.0</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1" class="c
onfluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Less4J</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">1.2.1-1.9</td><
td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1"
rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Underscore.js</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspa
n="1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">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"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr></tbody></table></div></div>
+ <div id="ConfluenceContent"><p>Tapestry is compatible with a
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 <a href="supported-environments-and-versions.html">Tapestry Users
mailing list</a> mailing list.</p><h2
id="SupportedEnvironmentsandVersions-Java&ServletAPIVersions">Java &
Servlet API Versions</h2><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh">Tapestry Version →</th><th colspan="1" rowspan="1"
class="confluenceTh">5.5</th><th colspan="1" rowspan="1"
class="confluenceTh">5.4</th><th colspan="1" rowspan="1"
class="confluenceTh">5.3.8</th><th colspan
="1" rowspan="1" class="confluenceTh">5.3.0 - 5.3.7</th><th colspan="1"
rowspan="1" class="confluenceTh">5.2</th><th colspan="1" rowspan="1"
class="confluenceTh">5.1</th><th colspan="1" rowspan="1"
class="confluenceTh">5.0.10</th><th colspan="1" rowspan="1"
class="confluenceTh">5.0.8</th><th colspan="1" rowspan="1"
class="confluenceTh">5.0</th><th colspan="1" rowspan="1"
class="confluenceTh">4.1</th></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">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 <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 →</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"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">6+</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Jetty</td><td colspan="1" rowspan="1"
class="confluenceTd"> 9</td><td colspan="1" rowspan="1"
class="confluenceTd"> 7-9</td><td colspan="1" rowspan="1" class
="confluenceTd"> 6-9</td><td colspan="1" rowspan="1"
class="confluenceTd"> 6-8</td><td colspan="1" rowspan="1"
class="confluenceTd">6-8</td><td colspan="1" rowspan="1"
class="confluenceTd">6-8</td><td colspan="1" rowspan="1"
class="confluenceTd">6-8</td><td colspan="1" rowspan="1"
class="confluenceTd">6-8</td><td colspan="1" rowspan="1"
class="confluenceTd">6-8</td><td colspan="1" rowspan="1"
class="confluenceTd">6-7</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Glassfish</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">2.1</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="
1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Apache TomEE</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">JBoss EAP</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">4.2.3</td><td colspan="1" rowspan=
"1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">4+</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Wildfly/JBoss AS</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceT
d"> </td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td
colspan="1" rowspan="1" class="confluenceTd"> </td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">Heroku</td><td colspan="1"
rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Google App Engine</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> 
;</td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td
colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1"
rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">+</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Amazon AWS</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan
="1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr></tbody></table></div><h2
id="SupportedEnvironmentsandVersions-Libraries">Libraries</h2><p>These are the
library versions known to work (and, in some cases, bundled with Tapestry).
Unless otherwise noted, adjacent versions will often work fine as well.</p><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1"
rowspan="1" class="confluenceTh">Tapestry Version →</th><th colspan="1"
rowspan="1" class="confluenceTh">5.5</th><th colspan="1" rowspan="1"
class="confluenceTh">5.4.1</th><th colspan="1" rowspan="1"
class="confluenceTh">5.4</th><th colspan="1" rowspan="1"
class="confluenceTh">5.3.8</th><th colspan="1" rowspan="1"
class="confluenceTh">5.3.7</th><th colspan="1" rowspan="1"
class="confluenceTh">5.3.3-5.3.6</th><th colspan="1" rowspan="1"
class="confluenceTh">5.3.2</th><th colspan="1" 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"> </td><td colspan="1" rowspan="1"
class="confluenceTd">?-4.3.6</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd"
> </td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td
>colspan="1" rowspan="1" class="confluenceTd">3.5.4-3.6.0</td><td colspan="1"
>rowspan="1" class="confluenceTd">-3.6.0</td><td colspan="1" rowspan="1"
>class="confluenceTd"> </td><td colspan="1" rowspan="1"
>class="confluenceTd">3.3.0+</td><td colspan="1" rowspan="1"
>class="confluenceTd"> </td><td colspan="1" rowspan="1"
>class="confluenceTd"> </td><td colspan="1" rowspan="1"
>class="confluenceTd"> </td><td colspan="1" rowspan="1"
>class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
>class="confluenceTd">JPA</td><td colspan="1" rowspan="1"
>class="confluenceTd"> </td><td colspan="1" rowspan="1"
>class="confluenceTd"> </td><td colspan="1" rowspan="1"
>class="confluenceTd"> </td><td colspan="1" rowspan="1"
>class="confluenceTd"> </td><td colspan="1" rowspan="1"
>class="confluenceTd"> </td><td colspan="1" rowspan="1"
>class="confluenceTd"> </td><td colspan="1
" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Spring</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1" class="conflue
nceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">3.1.0</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">jQuery.js</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">1.12.1</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td cols
pan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1"
rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Prototype.js</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">1.7.1</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1" 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"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Scriptaculous</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">1.9</td><td colspan=
"1" rowspan="1" class="confluenceTd">1.9</td><td colspan="1" rowspan="1"
class="confluenceTd">1.9</td><td colspan="1" rowspan="1"
class="confluenceTd">1.9</td><td colspan="1" rowspan="1"
class="confluenceTd">1.9</td><td colspan="1" rowspan="1"
class="confluenceTd">1.8.2</td><td colspan="1" rowspan="1"
class="confluenceTd">1.8.2</td><td colspan="1" rowspan="1"
class="confluenceTd">1.8.2</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">1.8.0</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Bootstrap CSS</td><td colspan="1" rowspan="1"
class="confluenceTd"> </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"> </td><td
colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1"
rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Moment.js</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">2.12.0</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1"
rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Less4J</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenc
eTd">1.2.1-1.9</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Underscore.js</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><t
d colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1"
rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">1.3.3</td><td colspan="1" rowspan="1"
class="confluenceTd">1.1.7</td><td colspan="1" rowspan="1"
class="confluenceTd">1.1.7</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </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 & 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> > <a
href="documentation.html">Documentation</a> > <a
href="user-guide.html">User Guide</a> > <a
href="client-side-javascript.html">Client-Side JavaScript</a> > <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;"><dependency>
+ <groupId>org.apache.tapestry</groupId>
+ <artifactId>tapestry-webresources</artifactId>
+ <version>${tapestry-release-version}</version>
+</dependency></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&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&page=http://tapestry.apache.org/typescript.html"></iframe>
+ </noscript>
+
+ </div>
+
+</body>
+</html>