Modified: websites/production/tapestry/content/general-questions.html
==============================================================================
--- websites/production/tapestry/content/general-questions.html (original)
+++ websites/production/tapestry/content/general-questions.html Sun Feb 11
12:23:46 2018
@@ -78,11 +78,11 @@
<div id="content">
<div id="ConfluenceContent"><h2
id="GeneralQuestions-GeneralQuestions">General Questions</h2><p><style
type="text/css">/*<![CDATA[*/
-div.rbtoc1517700093783 {padding: 0px;}
-div.rbtoc1517700093783 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1517700093783 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1518351730541 {padding: 0px;}
+div.rbtoc1518351730541 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1518351730541 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1517700093783">
+/*]]>*/</style></p><div class="toc-macro rbtoc1518351730541">
<ul class="toc-indentation"><li><a
href="#GeneralQuestions-GeneralQuestions">General Questions</a>
<ul class="toc-indentation"><li><a
href="#GeneralQuestions-HowdoIgetstartedwithTapestry?">How do I get started
with Tapestry?</a></li><li><a
href="#GeneralQuestions-WhydoesTapestryusePrototype?WhynotinsertfavoriteJavaScriptlibraryhere?">Why
does Tapestry use Prototype? Why not insert favorite JavaScript library
here?</a></li><li><a
href="#GeneralQuestions-WhydoesTapestryhaveitsownInversionofControlContainer?WhynotSpringorGuice?">Why
does Tapestry have its own Inversion of Control Container? Why not Spring or
Guice?</a></li><li><a
href="#GeneralQuestions-HowdoIupgradefromTapestry4toTapestry5?">How do I
upgrade from Tapestry 4 to Tapestry 5?</a></li><li><a
href="#GeneralQuestions-HowdoIupgradefromoneversionofTapestry5toanother?">How
do I upgrade from one version of Tapestry 5 to another?</a></li></ul>
</li></ul>
Modified: websites/production/tapestry/content/hibernate-user-guide.html
==============================================================================
--- websites/production/tapestry/content/hibernate-user-guide.html (original)
+++ websites/production/tapestry/content/hibernate-user-guide.html Sun Feb 11
12:23:46 2018
@@ -106,10 +106,12 @@
}</plain-text-body><p>This persistence strategy works with any Hibernate
entity that is associated with a valid Hibernate Session by persisting only the
id of the entity. Notice that no onPassivate() method is needed; when the page
renders the entity is loaded by the id stored in the session.</p><h1
id="HibernateUserGuide-Using@SessionStatewithentities">Using @SessionState with
entities</h1><p>
-</p><div class="confluence-information-macro
confluence-information-macro-information"><p class="title">Added in
5.2</p><span class="aui-icon aui-icon-small aui-iconfont-info
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body">
-</div></div>
-<div class="error"><span class="error">Unknown macro: {div}</span>
-<p> </p></div>The default strategy for persisting Session State Objects
is "session". Storing a Hibernate entity into a <HttpSession> is
problematic because the stored entity is detached from the Hibernate session.
Similar to @Persist("entity") you may use the "entity" persistence strategy to
persist Hibernate entities as SSOs:<parameter
ac:name="">java</parameter><plain-text-body>public class Index
+
+
+</p><div class="aui-message aui-message-info">
+Added in 5.2 |
+ 
+</div>The default strategy for persisting Session State Objects is "session".
Storing a Hibernate entity into a <HttpSession> is problematic because
the stored entity is detached from the Hibernate session. Similar to
@Persist("entity") you may use the "entity" persistence strategy to persist
Hibernate entities as SSOs:<parameter
ac:name="">java</parameter><plain-text-body>public class Index
{
@SessionState
@Property
Modified: websites/production/tapestry/content/injection-in-detail.html
==============================================================================
--- websites/production/tapestry/content/injection-in-detail.html (original)
+++ websites/production/tapestry/content/injection-in-detail.html Sun Feb 11
12:23:46 2018
@@ -129,10 +129,12 @@
</pre>
</div></div><h1 id="InjectioninDetail-ComponentInjection">Component
Injection</h1><p>Inside Tapestry components, injection occurs exclusively on
<em>fields</em> and is always triggered by the @Inject (or @InjectService)
annotation.</p><p>Component field injection is very similar to IoC layer, but
with a different set of injectable resources.</p><p>Injection is the
responsibility of the <a class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/InjectionProvider.html">InjectionProvider</a>
service, which is a chain-of-command across a number of
implementations.</p><h2 id="InjectioninDetail-BlockInjectionProvider">Block
InjectionProvider</h2><p>Checks if the field type is Block. If so, determines
the block id to inject (either from the field name, or from an @<a
class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Id.html">Id</a>
annotation, if present).</p><h2 id="InjectioninDetail-Defau
ltInjectionProvider">Default InjectionProvider</h2><p>Uses the
MasterObjectProvider service to provide the injectable value. The Service
Lookup stage is skipped.</p><h2
id="InjectioninDetail-ComponentResourcesInjectionProvider">ComponentResources
InjectionProvider</h2><p>Injects fields of type ComponentResources.</p><h2
id="InjectioninDetail-CommonResourcesInjectionProvider">CommonResources
InjectionProvider</h2><p>Injects fields with common
resources:</p><ul><li>String: the components' complete
id</li><li>org.slf4j.Logger: Logger for the component (based on component class
name)</li><li>Locale: locale for the containing page (page locale is
immutable)</li><li>Messages: Component's message
catalog</li><li>ComponentResourceSelector: selector for the containing page
(selector is immutable)</li></ul>
-<div class="confluence-information-macro
confluence-information-macro-information"><p class="title">Added in
5.3</p><span class="aui-icon aui-icon-small aui-iconfont-info
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body">
-</div></div>
-<div class="error"><span class="error">Unknown macro: {div}</span>
-<p>ComponentResourceSelector is new as of release 5.3. It encapsulates a
locale plus additional application-specific data used for skinning and/or
themeing.</p>
+
+
+<div class="aui-message aui-message-info">
+Added in 5.3 |
+ComponentResourceSelector is new as of release 5.3. It encapsulates a locale
plus additional application-specific data used for skinning and/or themeing.
+
</div><h2 id="InjectioninDetail-AssetInjectionProvider">Asset
InjectionProvider</h2><p>Triggered by the @Path annotation: the Path value has
symbols expanded, and is then converted to an Asset.</p><h2
id="InjectioninDetail-ServiceInjectionProvider">Service
InjectionProvider</h2><p>Equivalent to the Service Lookup phase in an IoC layer
injection.</p><h1
id="InjectioninDetail-@InjectServiceinComponents">@InjectService in
Components</h1><p>You may use the @<a class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/InjectService.html">InjectService</a>
annotation on component fields.</p><p></p></div>
</div>
Modified: websites/production/tapestry/content/integrating-with-jpa.html
==============================================================================
--- websites/production/tapestry/content/integrating-with-jpa.html (original)
+++ websites/production/tapestry/content/integrating-with-jpa.html Sun Feb 11
12:23:46 2018
@@ -78,15 +78,17 @@
<div id="content">
<div id="ConfluenceContent">
-<div class="confluence-information-macro
confluence-information-macro-information"><p class="title">Added in
5.3</p><span class="aui-icon aui-icon-small aui-iconfont-info
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body">
-</div></div>
-<div class="error"><span class="error">Unknown macro: {div}</span>
-<p> </p></div><p>Tapestry provides a built-in integration with the Java
Persistence API (JPA) through the <strong>Tapestry-jpa</strong> module. This
module supersedes the 3rd-party <a class="external-link"
href="http://www.tynamo.org/tapestry-jpa+guide/" rel="nofollow">Tynamo JPA
module</a>.</p><p><strong>Contents</strong></p><p><style
type="text/css">/*<![CDATA[*/
-div.rbtoc1517700109464 {padding: 0px;}
-div.rbtoc1517700109464 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1517700109464 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1517700109464">
+
+<div class="aui-message aui-message-info">
+Added in 5.3 |
+ 
+</div><p>Tapestry provides a built-in integration with the Java Persistence
API (JPA) through the <strong>Tapestry-jpa</strong> module. This module
supersedes the 3rd-party <a class="external-link"
href="http://www.tynamo.org/tapestry-jpa+guide/" rel="nofollow">Tynamo JPA
module</a>.</p><p><strong>Contents</strong></p><p><style
type="text/css">/*<![CDATA[*/
+div.rbtoc1518351748019 {padding: 0px;}
+div.rbtoc1518351748019 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1518351748019 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style></p><div class="toc-macro rbtoc1518351748019">
<ul class="toc-indentation"><li><a
href="#IntegratingwithJPA-Downloading">Downloading</a>
<ul class="toc-indentation"><li><a
href="#IntegratingwithJPA-SelectingaJPAImplementation">Selecting a JPA
Implementation</a></li></ul>
</li><li><a href="#IntegratingwithJPA-ConfiguringJPA">Configuring JPA</a>
Modified:
websites/production/tapestry/content/integrating-with-spring-framework.html
==============================================================================
--- websites/production/tapestry/content/integrating-with-spring-framework.html
(original)
+++ websites/production/tapestry/content/integrating-with-spring-framework.html
Sun Feb 11 12:23:46 2018
@@ -110,11 +110,11 @@
<p>For integrating Spring Security into your application, see <a
href="integrating-with-spring-framework.html">Integrating with Spring
Framework</a>.</p><p><strong>Contents</strong></p><p><style
type="text/css">/*<![CDATA[*/
-div.rbtoc1517700038896 {padding: 0px;}
-div.rbtoc1517700038896 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1517700038896 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1518351672409 {padding: 0px;}
+div.rbtoc1518351672409 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1518351672409 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1517700038896">
+/*]]>*/</style></p><div class="toc-macro rbtoc1518351672409">
<ul class="toc-indentation"><li>Related Articles</li></ul>
<ul><li><a href="#IntegratingwithSpringFramework-SpringVersion">Spring
Version</a></li><li><a href="#IntegratingwithSpringFramework-Usage">Usage</a>
<ul class="toc-indentation"><li><a
href="#IntegratingwithSpringFramework-Requireddependency">Required
dependency</a></li><li><a
href="#IntegratingwithSpringFramework-Updateyourweb.xmlfile">Update your
web.xml file</a></li><li><a
href="#IntegratingwithSpringFramework-AccessingtheSpringApplicationContext">Accessing
the Spring Application Context</a></li><li><a
href="#IntegratingwithSpringFramework-Injectingbeans">Injecting
beans</a></li><li><a
href="#IntegratingwithSpringFramework-InjectingTapestryservicesinSpringbeans">Injecting
Tapestry services in Spring beans</a></li></ul>
@@ -147,14 +147,16 @@ div.rbtoc1517700038896 li {margin-left:
private UserDAO userDAO;</pre>
</div></div><p>Searching for Spring beans is threaded into the <a
href="integrating-with-spring-framework.html">MasterObjectProvider service</a>.
The Spring context becomes one more place that Tapestry searches when
determining the injection for a injected field or method parameter.</p><h3
id="IntegratingwithSpringFramework-InjectingTapestryservicesinSpringbeans">Injecting
Tapestry services in Spring beans</h3>
-<div class="confluence-information-macro
confluence-information-macro-information"><p class="title">Added in
5.2</p><span class="aui-icon aui-icon-small aui-iconfont-info
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body">
-</div></div>
-<div class="error"><span class="error">Unknown macro: {div}</span>
-<p>If you have configured Spring to allow annotation-based injection, then you
will be able to inject Tapestry services into your Spring Beans.</p>
-<p>This feature is only available when Spring ApplicationContext is not
configured and loaded externally.</p>
-<p>Inside your Spring beans, you may use @<a class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Inject.html">Inject</a>
and @<a class="external-link"
href="http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/beans/factory/annotation/Autowired.html"
rel="nofollow">Autowired</a> annotations.</p>
+<div class="aui-message aui-message-info">
+Added in 5.2 |
+If you have configured Spring to allow annotation-based injection, then you
will be able to inject Tapestry services into your Spring Beans.
+
+This feature is only available when Spring ApplicationContext is not
configured and loaded externally.
+
+Inside your Spring beans, you may use
@[Inject|http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Inject.html]
and
@[Autowired|http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/beans/factory/annotation/Autowired.html]
annotations.
+
</div><pre>Simply add these two annotations on top the field you want to
inject in your Spring bean.
</pre><pre>{code:language=java}</pre><pre> @Inject
Modified: websites/production/tapestry/content/javascript-rewrite-in-54.html
==============================================================================
--- websites/production/tapestry/content/javascript-rewrite-in-54.html
(original)
+++ websites/production/tapestry/content/javascript-rewrite-in-54.html Sun Feb
11 12:23:46 2018
@@ -68,11 +68,11 @@
<div id="content">
<div id="ConfluenceContent"><p><style
type="text/css">/*<![CDATA[*/
-div.rbtoc1517700067711 {padding: 0px;}
-div.rbtoc1517700067711 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1517700067711 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1518351702976 {padding: 0px;}
+div.rbtoc1518351702976 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1518351702976 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1517700067711">
+/*]]>*/</style></p><div class="toc-macro rbtoc1518351702976">
<ul class="toc-indentation"><li><a
href="#JavaScriptRewritein5.4-TapestryandJavaScript">Tapestry and
JavaScript</a></li><li><a
href="#JavaScriptRewritein5.4-TapestryJavaScriptLimitations(through5.3)">Tapestry
JavaScript Limitations (through 5.3)</a>
<ul class="toc-indentation"><li><a
href="#JavaScriptRewritein5.4-DependenceonPrototype/Scriptaculous">Dependence
on Prototype/Scriptaculous</a></li><li><a
href="#JavaScriptRewritein5.4-LackofDocumentation">Lack of
Documentation</a></li><li><a
href="#JavaScriptRewritein5.4-LackofModuleStructure">Lack of Module
Structure</a></li><li><a
href="#JavaScriptRewritein5.4-ComplexInitialization">Complex
Initialization</a></li></ul>
</li><li><a
href="#JavaScriptRewritein5.4-JavaScriptImprovementsfor5.4">JavaScript
Improvements for 5.4</a>
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 11
12:23:46 2018
@@ -263,15 +263,19 @@ public class MyComponent
</pre>
</div></div></div></div></div></div><p>Inside a component, you should use
@Environmental, to highlight the fact that RenderSupport (like most
environmental objects) is only available during rendering, not during action
requests.</p><h1 id="LegacyJavaScript-CombiningJavaScriptlibraries">Combining
JavaScript libraries</h1>
-<div class="confluence-information-macro
confluence-information-macro-information"><p class="title">Added in
5.1.0.2</p><span class="aui-icon aui-icon-small aui-iconfont-info
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body">
-</div></div>
-<div class="error"><span class="error">Unknown macro: {div}</span>
-<p> </p></div><p>In production mode, Tapestry automatically
<em>combines</em> JavaScript libraries. A single request (for a <em>virtual
asset</em>) will retrieve the combined content of all referenced JavaScript
library files.</p><p>Note: starting with Tapestry 5.2, JavaScript libraries are
only combined if they are part of a JavaScript Stack (see below).</p><p>This is
a very useful feature, as it reduces the number of requests needed to present a
page to the user. It can be disabled, however, by setting the
SymbolConstants.COMBINE_SCRIPTS <a href="legacy-javascript.html">configuration
symbol</a> to false in your application's module class (normally
AppModule.java). By default it is enabled when in production mode and disabled
otherwise.</p><p>As elsewhere, if the client browser supports gzip compression,
the combined JavaScript will be compressed.</p><h1
id="LegacyJavaScript-MinifyingJavaScriptlibraries">Minifying JavaScript
libraries</h1>
-
-<div class="confluence-information-macro
confluence-information-macro-information"><p class="title">Added in
5.3</p><span class="aui-icon aui-icon-small aui-iconfont-info
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body">
-</div></div>
-<div class="error"><span class="error">Unknown macro: {div}</span>
-<p> </p></div><p>In production mode, Tapestry can automatically
<em>minify</em> (intelligently compresses) JavaScript libraries (and CSS) when
the application starts up. This can significantly decrease the size of static
content that the browser needs to download.</p><p>Minification is accomplished
using the ResourceMinimizer service. A YUI Compressor-based implementation is
available, but this can be overridden.</p><p>IMPORTANT NOTE: The tapestry-core
module only provides the empty infrastructure for supporting minification; the
actual logic is supplied in the tapestry-yuicompressor module. To use it,
you'll need to update your dependencies to include this module.</p><div
class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width: 1px;"><b>Maven pom.xml
(partial)</b></div><div class="codeContent panelContent pdl">
+
+
+<div class="aui-message aui-message-info">
+Added in 5.1.0.2 |
+ 
+</div><p>In production mode, Tapestry automatically <em>combines</em>
JavaScript libraries. A single request (for a <em>virtual asset</em>) will
retrieve the combined content of all referenced JavaScript library
files.</p><p>Note: starting with Tapestry 5.2, JavaScript libraries are only
combined if they are part of a JavaScript Stack (see below).</p><p>This is a
very useful feature, as it reduces the number of requests needed to present a
page to the user. It can be disabled, however, by setting the
SymbolConstants.COMBINE_SCRIPTS <a href="legacy-javascript.html">configuration
symbol</a> to false in your application's module class (normally
AppModule.java). By default it is enabled when in production mode and disabled
otherwise.</p><p>As elsewhere, if the client browser supports gzip compression,
the combined JavaScript will be compressed.</p><h1
id="LegacyJavaScript-MinifyingJavaScriptlibraries">Minifying JavaScript
libraries</h1>
+
+
+
+<div class="aui-message aui-message-info">
+Added in 5.3 |
+ 
+</div><p>In production mode, Tapestry can automatically <em>minify</em>
(intelligently compresses) JavaScript libraries (and CSS) when the application
starts up. This can significantly decrease the size of static content that the
browser needs to download.</p><p>Minification is accomplished using the
ResourceMinimizer service. A YUI Compressor-based implementation is available,
but this can be overridden.</p><p>IMPORTANT NOTE: The tapestry-core module only
provides the empty infrastructure for supporting minification; the actual logic
is supplied in the tapestry-yuicompressor module. To use it, you'll need to
update your dependencies to include this module.</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeHeader panelHeader pdl"
style="border-bottom-width: 1px;"><b>Maven 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-yuicompressor</artifactId>
@@ -280,10 +284,11 @@ public class MyComponent
</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 class="confluence-information-macro
confluence-information-macro-warning"><p class="title">Deprecated since
5.3</p><span class="aui-icon aui-icon-small aui-iconfont-error
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body">
-</div></div>
-<div class="error"><span class="error">Unknown macro: {div}</span>
-<p> </p></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 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">
<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.");
@@ -294,10 +299,11 @@ public class MyComponent
</pre>
</div></div><p>The constant <a class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/MarkupConstants.html">MarkupConstants.WAIT_FOR_PAGE</a>
contains the part of this snippet inside the quotes.</p><h1
id="LegacyJavaScript-TheStandardTapestryLibrary">The Standard Tapestry
Library</h1><p>Tapestry's client-side support, the standard Tapestry library,
consists of <code>tapestry.js</code>, which has dependencies on Prototype and
on Scriptaculous Effects. tapestry.js, along with its dependencies. The
tapestry.js library is automatically added to the page when your code adds any
other JavaScript or JavaScript library.</p><h2
id="LegacyJavaScript-TapestryNamespace">Tapestry Namespace</h2><p>Tapestry
defines a number of object and classes inside the Tapestry namespace.</p><p>It
also adds a handful of methods to the Form class, and to Form elements. These
are mostly related to input validation and determining element
visibility.</p><h2 id="LegacyJavaScri
pt-TheTapestryObject$T()">The Tapestry Object $T()</h2>
-<div class="confluence-information-macro
confluence-information-macro-warning"><p class="title">Deprecated since 5.2 (no
replacement)</p><span class="aui-icon aui-icon-small aui-iconfont-error
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body">
-</div></div>
-<div class="error"><span class="error">Unknown macro: {div}</span>
-<p> </p></div><p>The standard library adds a new function,
<code>$T()</code>. This function is used much like Prototype's
<code>$()</code>, except that instead of returning a DOM object, it returns a
hash (an initially empty JavaScript object) that is associated with the DOM
object. This hash is known as <em>the Tapestry object</em>.</p><p>You may pass
in an object id (as a string) or an object reference. The Tapestry Object is
created on first invocation. Note: you'll see it as a property name _tapestry
on the DOM object (which may be useful when debugging).</p><p>When Tapestry
adds information to a DOM object, it does so in the Tapestry object. This helps
avoid name conflicts, and groups all Tapestry-added properties into one place
which is much easier to debug.</p><p>For example, you might store a value for
an element in one place:</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeContent panelContent pdl">
+
+<div class="aui-message aui-message-warning">
+Deprecated since 5.2 (no replacement) |
+ 
+</div><p>The standard library adds a new function, <code>$T()</code>. This
function is used much like Prototype's <code>$()</code>, except that instead of
returning a DOM object, it returns a hash (an initially empty JavaScript
object) that is associated with the DOM object. This hash is known as <em>the
Tapestry object</em>.</p><p>You may pass in an object id (as a string) or an
object reference. The Tapestry Object is created on first invocation. Note:
you'll see it as a property name _tapestry on the DOM object (which may be
useful when debugging).</p><p>When Tapestry adds information to a DOM object,
it does so in the Tapestry object. This helps avoid name conflicts, and groups
all Tapestry-added properties into one place which is much easier to
debug.</p><p>For example, you might store a value for an element in one
place:</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;"> $T(myid).fadeDuration = .5;
</pre>
</div></div><p>Then use it somewhere else:</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
@@ -322,10 +328,12 @@ 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 class="confluence-information-macro
confluence-information-macro-information"><p class="title">Added in
5.2</p><span class="aui-icon aui-icon-small aui-iconfont-info
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body">
-</div></div>
-<div class="error"><span class="error">Unknown macro: {div}</span>
-<p> </p></div><p>Tapestry allows you to define groups of related
JavaScript libraries and stylesheets as "stacks". The built-in "core" stack is
used to define the core JavaScript libraries needed by Tapestry (currently,
this includes Prototype and Scriptaculous, as well as Tapestry-specific
libraries). Other component libraries may define additional stacks for related
sets of resources, for example, to bundle together some portion of the ExtJS or
YUI libraries.</p><p>A <a class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/javascript/JavaScriptStack.html">JavaScriptStack</a>
can be thought of as a generalization of Tapestry 5.1's ClientInfrastructure,
which exists now to define the "core" JavaScript stack.</p><p>JavaScript assets
of a stack may (when enabled) be exposed to the client as a single URL
(identifying the stack by name). The individual assets are combined into a
single virtual asset, which is then streamed to the clie
nt.</p><p>To group several static resources together in a single stack, you
must create a new implementation of the JavaScriptStack interface . This
interface has four methods:</p><ul
class="alternate"><li><strong>getStylesheets</strong> : This method will return
a list of stylesheet files (StylesheetLink-type object) associated to this
stack</li></ul><ul
class="alternate"><li><strong>getJavaScriptLibraries</strong> : This method
will return a list of javascript files (Asset-type object) associated to this
stack</li></ul><ul class="alternate"><li><strong>getStacks</strong> : It is
also possible to make a stack dependant of other stacks. All the stacks defined
in this method will be loaded before the current stack.</li></ul><ul
class="alternate"><li><strong>getInitialization</strong> : this method makes it
possible to call a JavaScript initialization for the stack. Tapestry will
automatically add this initialization to the page that imports the
stacks.</li></ul><div class="code panel
pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl"
style="border-bottom-width: 1px;"><b>myStack.java</b></div><div
class="codeContent panelContent pdl">
+
+
+<div class="aui-message aui-message-info">
+Added in 5.2 |
+ 
+</div><p>Tapestry allows you to define groups of related JavaScript libraries
and stylesheets as "stacks". The built-in "core" stack is used to define the
core JavaScript libraries needed by Tapestry (currently, this includes
Prototype and Scriptaculous, as well as Tapestry-specific libraries). Other
component libraries may define additional stacks for related sets of resources,
for example, to bundle together some portion of the ExtJS or YUI
libraries.</p><p>A <a class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/javascript/JavaScriptStack.html">JavaScriptStack</a>
can be thought of as a generalization of Tapestry 5.1's ClientInfrastructure,
which exists now to define the "core" JavaScript stack.</p><p>JavaScript assets
of a stack may (when enabled) be exposed to the client as a single URL
(identifying the stack by name). The individual assets are combined into a
single virtual asset, which is then streamed to the client.</p><p>To
group several static resources together in a single stack, you must create a
new implementation of the JavaScriptStack interface . This interface has four
methods:</p><ul class="alternate"><li><strong>getStylesheets</strong> : This
method will return a list of stylesheet files (StylesheetLink-type object)
associated to this stack</li></ul><ul
class="alternate"><li><strong>getJavaScriptLibraries</strong> : This method
will return a list of javascript files (Asset-type object) associated to this
stack</li></ul><ul class="alternate"><li><strong>getStacks</strong> : It is
also possible to make a stack dependant of other stacks. All the stacks defined
in this method will be loaded before the current stack.</li></ul><ul
class="alternate"><li><strong>getInitialization</strong> : this method makes it
possible to call a JavaScript initialization for the stack. Tapestry will
automatically add this initialization to the page that imports the
stacks.</li></ul><div class="code panel pdl" style="
border-width: 1px;"><div class="codeHeader panelHeader pdl"
style="border-bottom-width: 1px;"><b>myStack.java</b></div><div
class="codeContent panelContent pdl">
<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;">public class myStack implements JavaScriptStack {
private final AssetSource assetSource;
Modified: websites/production/tapestry/content/link-components-faq.html
==============================================================================
--- websites/production/tapestry/content/link-components-faq.html (original)
+++ websites/production/tapestry/content/link-components-faq.html Sun Feb 11
12:23:46 2018
@@ -102,10 +102,12 @@
</pre>
</div></div><p>The @RequestParameter annotation directs Tapestry to extract
the query parameter from the request and coerce it to type boolean. You can use
any reasonable type for such a parameter (int, long and Date are
common).</p><p>A similar technique can be used to add query parmeters to
component event URLs (the type generated by the ActionLink or EventLink
components), by injecting the ComponentResources, and invoking method
<code>createEventLink()</code>.</p>
-<div class="confluence-information-macro
confluence-information-macro-information"><p class="title">Added in
5.3</p><span class="aui-icon aui-icon-small aui-iconfont-info
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body">
-</div></div>
-<div class="error"><span class="error">Unknown macro: {div}</span>
-<p>You may also bind a link component's <code>parameters</code> parameter;
this is a Map of additional query parameters to add to the URL. The Map keys
should be strings, and the Map values will be encoded to strings. Tapestry 5.3
also adds a literal map syntax to the <a href="property-expressions.html"
title="Property Expressions">property expression language</a>.</p>
+
+
+<div class="aui-message aui-message-info">
+Added in 5.3 |
+You may also bind a link component's {{parameters}} parameter; this is a Map
of additional query parameters to add to the URL. The Map keys should be
strings, and the Map values will be encoded to strings. Tapestry 5.3 also adds
a literal map syntax to the [property expression language|TAPESTRY:Property
Expressions].
+
</div><h3
id="LinkComponentsFAQ-HowdoIcreateaLinkbacktothecurrentpagefromacomponent?">How
do I create a Link back to the current page from a component?</h3><p>Sometimes
it is useful to create a link back to the current page, but you don't always
know the name of the page (the link may appear inside a deeply nested
subcomponent). Fortunately, this is easy.</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
<pre class="brush: xml; gutter: false; theme: Default"
style="font-size:12px;"><t:pagelink
page="prop:componentResources.pageName">refresh page</t:pagelink>
Modified:
websites/production/tapestry/content/page-and-component-classes-faq.html
==============================================================================
--- websites/production/tapestry/content/page-and-component-classes-faq.html
(original)
+++ websites/production/tapestry/content/page-and-component-classes-faq.html
Sun Feb 11 12:23:46 2018
@@ -110,13 +110,13 @@ public class DBImage
-<span class="gliffy-container" id="gliffy-container-23527573-8926"
data-fullwidth="750" data-ceoid="23335008"
data-edit="${diagramEditLink.getLinkUrl()}"
data-full="${diagramZoomLink.getLinkUrl()}" data-filename="Class Loaders">
+<span class="gliffy-container" id="gliffy-container-23527573-162"
data-fullwidth="750" data-ceoid="23335008"
data-edit="${diagramEditLink.getLinkUrl()}"
data-full="${diagramZoomLink.getLinkUrl()}" data-filename="Class Loaders">
- <map id="gliffy-map-23527573-31" name="gliffy-map-23527573-31"></map>
+ <map id="gliffy-map-23527573-1740" name="gliffy-map-23527573-1740"></map>
- <img class="gliffy-image" id="gliffy-image-23527573-8926" width="750"
height="425" data-full-width="750" data-full-height="425"
src="https://cwiki.apache.org/confluence/download/attachments/23335008/Class%20Loaders.png?version=4&modificationDate=1283534469000&api=v2"
alt="Class Loaders" usemap="#gliffy-map-23527573-31">
+ <img class="gliffy-image" id="gliffy-image-23527573-162" width="750"
height="425" data-full-width="750" data-full-height="425"
src="https://cwiki.apache.org/confluence/download/attachments/23335008/Class%20Loaders.png?version=4&modificationDate=1283534469000&api=v2"
alt="Class Loaders" usemap="#gliffy-map-23527573-1740">
- <map class="gliffy-dynamic" id="gliffy-dynamic-map-23527573-8926"
name="gliffy-dynamic-map-23527573-8926"></map>
+ <map class="gliffy-dynamic" id="gliffy-dynamic-map-23527573-162"
name="gliffy-dynamic-map-23527573-162"></map>
</span>
Modified: websites/production/tapestry/content/parallel-execution.html
==============================================================================
--- websites/production/tapestry/content/parallel-execution.html (original)
+++ websites/production/tapestry/content/parallel-execution.html Sun Feb 11
12:23:46 2018
@@ -81,10 +81,12 @@
<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;"> RSSFeed feed = executor.invoke(RSSFeed.class, new
Invokable<RSSFeed>() { ... });</pre>
</div></div><p>This only works if the type is an interface. A proxy for the
interface is created around the Future object; any invocation on the proxy will
invoke get() on the Future (that is, will block until the value is
computed).</p><h1 id="ParallelExecution-Configuration">Configuration</h1><p>The
behavior of the ParallelExecutor can be tuned with global configuration
symbols.</p><p>Java constants for the configuration symbols are defined in <a
class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/IOCSymbols.html">IOCSymbols</a>.</p><h3
id="ParallelExecution-tapestry.thread-pool-enabled">tapestry.thread-pool-enabled</h3><p>If
true, the default, then the thread pool will operate. If false, then
ParallelExecutor's implementation changes to invoke the Invokable immediately,
not in a pooled thread. This is useful in environments, such as <a
class="external-link" href="http://code.google.com/appengine/"
rel="nofollow">Google App Engine</a>,
that do not support the creation of threads and thread pools.</p><h3
id="ParallelExecution-tapestry.thread-pool.core-pool-size">tapestry.thread-pool.core-pool-size</h3><p>Minimum
size of the thread pool. Defaults to 3.</p><h3
id="ParallelExecution-tapestry.thread-pool.max-pool-size">tapestry.thread-pool.max-pool-size</h3><p>Maximum
number of threads (active or inactive) in the thread pool. Defaults to
20.</p><h3
id="ParallelExecution-tapestry.thread-pool.keep-alive">tapestry.thread-pool.keep-alive</h3><p>Time
to keep waiting threads alive. Defaults to "1 m" (one minute).</p><h3
id="ParallelExecution-tapestry.thread-pool.queue-size">tapestry.thread-pool.queue-size</h3><p>
-</p><div class="confluence-information-macro
confluence-information-macro-information"><p class="title">Added in
5.3</p><span class="aui-icon aui-icon-small aui-iconfont-info
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body">
-</div></div>
-<div class="error"><span class="error">Unknown macro: {div}</span>
-<p> </p></div>The size of the task queue. When there are at least the
core number of threads in the pool, tasks will be placed in the queue. If the
queue is empty, more threads may be created (up to the maximum pool size). If
the queue is full and all threads have been created, the task is rejected (and
exception is thrown).<p>Defaults to 100.</p><p> </p><p></p></div>
+
+
+</p><div class="aui-message aui-message-info">
+Added in 5.3 |
+ 
+</div>The size of the task queue. When there are at least the core number of
threads in the pool, tasks will be placed in the queue. If the queue is empty,
more threads may be created (up to the maximum pool size). If the queue is full
and all threads have been created, the task is rejected (and exception is
thrown).<p>Defaults to 100.</p><p> </p><p></p></div>
</div>
<div class="clearer"></div>
Modified: websites/production/tapestry/content/property-expressions.html
==============================================================================
--- websites/production/tapestry/content/property-expressions.html (original)
+++ websites/production/tapestry/content/property-expressions.html Sun Feb 11
12:23:46 2018
@@ -135,10 +135,12 @@ mapKey : keyword | constant | propertyCh
</pre>
</div></div><p>
-</p><div class="confluence-information-macro
confluence-information-macro-information"><p class="title">Added in
5.3</p><span class="aui-icon aui-icon-small aui-iconfont-info
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body">
-</div></div>
-<div class="error"><span class="error">Unknown macro: {div}</span>
-<p>Support for map literals was added in Tapestry 5.3.</p>
+
+
+</p><div class="aui-message aui-message-info">
+Added in 5.3 |
+Support for map literals was added in Tapestry 5.3.
+
</div>Notes:<ul><li>Whitespace is ignored.</li><li>Integers and decimals may
have a leading sign ('+' or '-').</li><li>Constants are in base 10 (octal and
hex notation is not yet supported). Decimals may contain a decimal point
(exponent notation not yet supported).</li><li>Literal strings are enclosed in
single quotes.</li><li>The <code>rangeOp</code> creates a range object that
will iterate between the two values. The upper and lower bounds may be literal
integers, or property expressions.</li><li>An identifier by itself is a
property name. An identifier with parenthesis is a method
invocation.</li><li>Property names, method names, and keywords are
case-insensitive.</li><li>'this' is the root object (i.e., the containing
component).</li><li>The <code>not</code> operator coerces the expression to a
<code>boolean</code> (so it can be used on strings, numbers,
etc.).</li><li>Method matching is based on method name and number of
parameters, but not parameter types. The <a href="prope
rty-expressions.html">TypeCoercer</a> service is used to convert parameters to
the correct type to be passed into the method.</li></ul><h2
id="PropertyExpressions-Examples">Examples</h2><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p> </p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Example</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Notes</p></th></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Keyword</p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>this</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> </p></td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Keyword</p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> </p></td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Property Name</p></th><td colspan="1" rowspan="1"
class="confluen
ceTd"><p>userName</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Calls getUserName() or setUserName, depending on
context</p></td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Property Chain</p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>user.address.city</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Calls getUser().getAddress().getCity() or
getUser().getAddress().setCity(), depending on context</p></td></tr><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p>Property Chain</p></th><td
colspan="1" rowspan="1" class="confluenceTd"><p>user?.name</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Calls getUser() and, if the
result is not null, calls getName() on the result</p></td></tr><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p>Method Invocation</p></th><td
colspan="1" rowspan="1" class="confluenceTd"><p>groupList.size()</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>calls getGroupList().size(
)</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Method
Invocation</p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>members.findById(<a class="external-link"
href="http://user.id" rel="nofollow">user.id</a>)?.name</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Calls
getMembers().findById(getUser().getId())?.getName() (unless findById returns
null)</p></td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Range</p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>1..10</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Iterates between integers 1 and 10</p></td></tr><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p>Range</p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p>1..groupList.size()</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Iterates between 1 and the result of
getGroupList().size()</p></td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Literal String</p></t
h><td colspan="1" rowspan="1" class="confluenceTd"><p>'Beer is proof that God
loves us and wants us to be happy.'</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Use single quotes</p></td></tr><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>List</p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>[<a class="external-link" href="http://user.name"
rel="nofollow">user.name</a>, user.email, user.phone]</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p> </p></td></tr><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>Not Operator</p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p>! user.deleted</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>the boolean negation of
getUser().getDeleted()</p></td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Not, Coerced</p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>! user.middleName</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>true only if ge
tUser.getMiddleName() returns null or an empty string</p></td></tr><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p>Map</p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p>{ 'framework' : 'Tapestry', 'version' :
version }</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Keys are
string literals (in single quotes), but could be properties as
well</p></td></tr></tbody></table></div></div>
</div>
Modified: websites/production/tapestry/content/registry-startup.html
==============================================================================
--- websites/production/tapestry/content/registry-startup.html (original)
+++ websites/production/tapestry/content/registry-startup.html Sun Feb 11
12:23:46 2018
@@ -85,10 +85,12 @@
}</pre>
</div></div><p>Generally, these contributions are in the form of inner
classes; if they were services, they could just be eagerly loaded.</p><h2
id="RegistryStartup-StartupMethods">Startup Methods</h2><p>
-</p><div class="confluence-information-macro
confluence-information-macro-information"><p class="title">Added in
5.2</p><span class="aui-icon aui-icon-small aui-iconfont-info
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body">
-</div></div>
-<div class="error"><span class="error">Unknown macro: {div}</span>
-<p> </p></div>Instead of making contributions to the RegistryStartup
service configuration you can provide startup methods inside your modules. A
startup method is a static or instance method of a module annotated with @<a
class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Startup.html">Startup</a>
annotation. Each module is allowed to contain several startup methods.<div
class="code panel pdl" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
+
+
+</p><div class="aui-message aui-message-info">
+Added in 5.2 |
+ 
+</div>Instead of making contributions to the RegistryStartup service
configuration you can provide startup methods inside your modules. A startup
method is a static or instance method of a module annotated with @<a
class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Startup.html">Startup</a>
annotation. Each module is allowed to contain several startup methods.<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;">public class MyModule
{
Modified: websites/production/tapestry/content/release-notes-50.html
==============================================================================
--- websites/production/tapestry/content/release-notes-50.html (original)
+++ websites/production/tapestry/content/release-notes-50.html Sun Feb 11
12:23:46 2018
@@ -78,11 +78,11 @@
<div id="content">
<div id="ConfluenceContent"><p>This is the consolidated list
of changes between Tapestry versions 5.0.3 and 5.0.19. Before upgrading, be
sure to review the <a href="release-notes-50.html">Release Notes 5.0</a>
instructions.</p><p><strong>Contents</strong></p><p><style
type="text/css">/*<![CDATA[*/
-div.rbtoc1517700108174 {padding: 0px;}
-div.rbtoc1517700108174 ul {list-style: disc;margin-left: 0px;padding-left:
5px;}
-div.rbtoc1517700108174 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1518351746279 {padding: 0px;}
+div.rbtoc1518351746279 ul {list-style: disc;margin-left: 0px;padding-left:
5px;}
+div.rbtoc1518351746279 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1517700108174">
+/*]]>*/</style></p><div class="toc-macro rbtoc1518351746279">
<ul class="toc-indentation"><li><a
href="#ReleaseNotes5.0-TapestryVersion5.0.19">Tapestry Version
5.0.19</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.18">Tapestry
Version 5.0.18</a></li><li><a
href="#ReleaseNotes5.0-TapestryVersion5.0.17">Tapestry Version
5.0.17</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.16">Tapestry
Version 5.0.16</a></li><li><a
href="#ReleaseNotes5.0-TapestryVersion5.0.15">Tapestry Version
5.0.15</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.14">Tapestry
Version 5.0.14</a></li><li><a
href="#ReleaseNotes5.0-TapestryVersion5.0.13">Tapestry Version
5.0.13</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.12">Tapestry
Version 5.0.12</a></li><li><a
href="#ReleaseNotes5.0-TapestryVersion5.0.11">Tapestry Version
5.0.11</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.10">Tapestry
Version 5.0.10</a></li><li><a
href="#ReleaseNotes5.0-TapestryVersion5.0.9">Tapestry Version
5.0.9</a></li><li><a href="#ReleaseNot
es5.0-TapestryVersion5.0.8">Tapestry Version 5.0.8</a></li><li><a
href="#ReleaseNotes5.0-TapestryVersion5.0.7">Tapestry Version
5.0.7</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.6">Tapestry
Version 5.0.6</a></li><li><a
href="#ReleaseNotes5.0-TapestryVersion5.0.5">Tapestry Version
5.0.5</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.4">Tapestry
Version 5.0.4</a></li><li><a
href="#ReleaseNotes5.0-TapestryVersion5.0.3">Tapestry Version
5.0.3</a></li></ul>
[... 3 lines stripped ...]