Author: buildbot
Date: Sat Feb  3 17:21:22 2018
New Revision: 1024783

Log:
Production update by buildbot for tapestry

Modified:
    websites/production/tapestry/content/ajax-and-zones.html
    websites/production/tapestry/content/aliases.html
    websites/production/tapestry/content/autoloading-modules.html
    websites/production/tapestry/content/bean-validation.html
    websites/production/tapestry/content/built-in-modules.html
    websites/production/tapestry/content/cache/main.pageCache
    websites/production/tapestry/content/case-insensitivity.html
    websites/production/tapestry/content/chainbuilder-service.html
    websites/production/tapestry/content/cheat-sheets.html
    websites/production/tapestry/content/client-side-javascript.html
    websites/production/tapestry/content/coffeescript.html
    websites/production/tapestry/content/component-report.html
    websites/production/tapestry/content/defining-tapestry-ioc-services.html
    websites/production/tapestry/content/development-dashboard.html
    websites/production/tapestry/content/hibernate-core-conf.html
    websites/production/tapestry/content/hibernate-core.html
    websites/production/tapestry/content/hibernate.html
    websites/production/tapestry/content/injection-in-detail.html
    websites/production/tapestry/content/integrating-with-jpa.html
    websites/production/tapestry/content/integrating-with-spring-framework.html
    websites/production/tapestry/content/ioc.html
    websites/production/tapestry/content/javascript-modules.html
    websites/production/tapestry/content/legacy-javascript.html
    websites/production/tapestry/content/logging-in-tapestry.html
    websites/production/tapestry/content/modules.html
    websites/production/tapestry/content/object-providers.html
    websites/production/tapestry/content/operation-tracker.html
    websites/production/tapestry/content/ordering-by-constraints.html
    websites/production/tapestry/content/pipelinebuilder-service.html
    websites/production/tapestry/content/service-advisors.html
    websites/production/tapestry/content/service-implementation-reloading.html
    websites/production/tapestry/content/service-serialization.html
    websites/production/tapestry/content/shadowbuilder-service.html
    websites/production/tapestry/content/starting-the-ioc-registry.html
    websites/production/tapestry/content/strategybuilder-service.html
    websites/production/tapestry/content/symbols.html
    websites/production/tapestry/content/tapestry-ioc-configuration.html
    websites/production/tapestry/content/tapestry-ioc-decorators.html
    websites/production/tapestry/content/tapestry-ioc-modules.html
    websites/production/tapestry/content/tapestry-ioc-overview.html
    websites/production/tapestry/content/third-party-modules.html
    websites/production/tapestry/content/type-coercion.html
    websites/production/tapestry/content/user-guide.html

Modified: websites/production/tapestry/content/ajax-and-zones.html
==============================================================================
--- websites/production/tapestry/content/ajax-and-zones.html (original)
+++ websites/production/tapestry/content/ajax-and-zones.html Sat Feb  3 
17:21:22 2018
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-
+       
        <!--
 
     Licensed to the Apache Software Foundation (ASF) under one or more
@@ -174,7 +174,7 @@
 </div>
 
 
-<p>Tapestry provides easy-to-use support for <strong>Ajax</strong>, the 
technique of using JavaScript to dynamically update parts of a web page with 
content from the server without redrawing the whole page. With Tapestry, you 
can do simple Ajax updates without having to write any JavaScript code at 
all.</p><p>Ajax support is included in many <a  
href="component-reference.html">built-in components</a> and <a  
href="component-mixins.html">component mixins</a> via 
the&#160;<code>async</code> parameter (in Tapestry 5.4+) and 
the&#160;<code>zone</code> parameter (for earlier versions). Here we use an 
EventLink component to trigger an Ajax update of another area of the 
page:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Page or 
component template (partial)</b></div><div class="codeContent panelContent pdl">
+<p>Tapestry provides easy-to-use support for <strong>Ajax</strong>, the 
technique of using JavaScript to dynamically update parts of a web page with 
content from the server without redrawing the whole page. With Tapestry, you 
can do simple Ajax updates without having to write any JavaScript code at 
all.</p><p>Ajax support is included in many <a  
href="ajax-and-zones.html">built-in components</a> and <a  
href="ajax-and-zones.html">component mixins</a> via the&#160;<code>async</code> 
parameter (in Tapestry 5.4+) and the&#160;<code>zone</code> parameter (for 
earlier versions). Here we use an EventLink component to trigger an Ajax update 
of another area of the page:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 1px;"><b>Page or component template 
(partial)</b></div><div class="codeContent panelContent pdl">
 <pre class="brush: xml; gutter: false; theme: Default" 
style="font-size:12px;">&lt;t:eventlink event="updateTime" 
async="true"&gt;update&lt;/t:eventlink&gt;
 ...
 &lt;t:zone t:id="timeArea" id="timeArea"&gt;
@@ -197,7 +197,7 @@ void onUpdateTime()
     currentTime = new Date();
    &#160;ajaxResponseRenderer.addRender(timeArea);
 } </pre>
-</div></div><p>That <code>onUpdateTime</code> method is just an ordinary 
Tapestry event handler, except that it uses an injected 
<code>AjaxResponseRenderer</code> to tell Tapestry what zone to update when the 
link is clicked.</p><p>Since Tapestry 5.4.2, you can also easily invoke 
server-side event handlers using the&#160;<code>@PublishEvents</code> 
annotation and the&#160;<code>t5/core/ajax</code>&#160;JavaScript function, as 
explained in the "<span style="font-size: 14.0px;">Invoking server-side event 
handler methods from JavaScript" section below.</span></p><h3 
id="AjaxandZones-Zones">Zones</h3><p>Zones are Tapestry's approach to 
performing partial page updates. A <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/components/Zone.html";>Zone
 component</a> renders as an HTML element, typically a &lt;div&gt;, and serves 
as a marker for where dynamically-updated content should be replaced. A zone is 
recognizable in the DOM because i
 t will have the attribute&#160;<code>data-container-type=zone</code>. The 
client-side support for Zones is keyed off of this attribute and 
value.</p><p>Starting in Tapestry 5.4 you can use any HTML element in your 
template as a zone marker, by passing its client-side id to the two-argument 
version of the addRender method.</p><p><span style="line-height: 1.4285715;">A 
Zone updated can be triggered by an EventLink, ActionLink or Select component, 
or by a Form. All of these components support the <code>async</code> and/or 
<code>zone</code> parameters. Clicking such a link will invoke an event handler 
method on the server as normal ... except that a </span><em style="line-height: 
1.4285715;">partial page response</em><span style="line-height: 1.4285715;"> is 
sent to the client, and the content of that response is used to update the 
Zone's &lt;div&gt; in place.</span></p><div class="navmenu" style="float:right; 
background:#eee; margin:3px; padding:0 1em">
+</div></div><p>That <code>onUpdateTime</code> method is just an ordinary 
Tapestry event handler, except that it uses an injected 
<code>AjaxResponseRenderer</code> to tell Tapestry what zone to update when the 
link is clicked.</p><p>Since Tapestry 5.4.2, you can also easily invoke 
server-side event handlers using the&#160;<code>@PublishEvents</code> 
annotation and the&#160;<code>t5/core/ajax</code>&#160;JavaScript function, as 
explained in the "<span>Invoking server-side event handler methods from 
JavaScript" section below.</span></p><h3 
id="AjaxandZones-Zones">Zones</h3><p>Zones are Tapestry's approach to 
performing partial page updates. A <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/components/Zone.html";>Zone
 component</a> renders as an HTML element, typically a &lt;div&gt;, and serves 
as a marker for where dynamically-updated content should be replaced. A zone is 
recognizable in the DOM because it will have the attribute&#
 160;<code>data-container-type=zone</code>. The client-side support for Zones 
is keyed off of this attribute and value.</p><p>Starting in Tapestry 5.4 you 
can use any HTML element in your template as a zone marker, by passing its 
client-side id to the two-argument version of the addRender 
method.</p><p><span>A Zone updated can be triggered by an EventLink, ActionLink 
or Select component, or by a Form. All of these components support the 
<code>async</code> and/or <code>zone</code> parameters. Clicking such a link 
will invoke an event handler method on the server as normal ... except that a 
</span><em>partial page response</em><span> is sent to the client, and the 
content of that response is used to update the Zone's &lt;div&gt; in 
place.</span></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/ajax/actionlink";
 rel="nofollow">AJAX ActionLink</a></p></div><h3 
id="AjaxandZones-EventHandlerReturnTypes">Event Handler Return Types</h3><p>In 
a traditional request, the return value of an event handler method may used to 
determine which page will render a <em>complete</em> response, and a 
<em>redirect</em> may sent to the client to render the new page (as a new 
request).</p><p>In contrast, with a Zone update, the return value may used to 
render a <em>partial response</em> within the <em>same request</em>.</p><div 
class="confluence-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>Starting in Tapestry 5.3, Ajax 
event handlers typically have a void return type and use AjaxResponseRenderer 
to indicate which zone to update. The AjaxResponseRe
 nder approach means that the&#160;<code>zone</code> parameter's value 
(oridinarily indicating which zone to update) is no longer needed. Tapestry 5.4 
introduced the&#160;<code>async="true"</code> parameter to avoid having to 
redundantly indicate which zone to update.</p></div></div><p>If you only have 
one zone to update and don't want to use AjaxResponseRenderer, you can instead 
return a value from your event handler method. The simplest case is just to 
return the zone's own body:</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
@@ -210,7 +210,7 @@ Object onActionFromSomeLink()
 {
    return myZone.getBody(); // AJAX request, return zone's own body
 }</pre>
-</div></div><p>The possible return values are:</p><ul><li>An injected Block or 
Component to render as the response. The response will be a JSON hash, with a 
"content" key whose value is the rendered markup. This is the basis for updates 
with the Zone component.</li><li>The zone's own body (using Zone's getBody() 
method)</li><li>null (to redraw the current page)</li><li>A <a  
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/json/JSONObject.html";>JSONObject</a>
 or <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/json/JSONArray.html";>JSONArray</a>,
 which will be sent as the response.</li><li>A <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/StreamResponse.html";>StreamResponse</a>,
 which will be sent as the response.</li><li>A <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/Link.html";>Link</a>,
 which wil
 l send a redirect to the client.</li><li>A page name (as a String), or a page 
class, or a page instance, which will send a redirect to the indicated 
page.</li></ul><p>See <a  href="page-navigation.html">Page Navigation</a> for 
full descriptions of the above.</p><h3 
id="AjaxandZones-GracefulDegradation">Graceful Degradation</h3><p>Users who do 
not have JavaScript enabled may click EventLinks (or ActionLinks, or Forms) 
that are configured to update a Zone. When that occurs, the request will still 
be sent to the server, but Tapestry will handle it as a <em>traditional</em> 
request.</p><p>This happens automatically when your event handler method has a 
void return type.</p><p>However, to support graceful degradation when your 
event handler method has a <em>non-void</em> return type, you should detect 
non-Ajax requests and return a traditional response, typically null to redraw 
the whole page. This is accomplished by injecting the <a  class="external-link" 
href="http://tapestry.apache.org
 /current/apidocs/org/apache/tapestry5/services/Request.html">Request</a> 
object, and invoking the isXHR() method. This value will be true for Ajax 
requests, and false for traditional request.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>The possible return values are:</p><ul><li>An injected Block or 
Component to render as the response. The response will be a JSON hash, with a 
"content" key whose value is the rendered markup. This is the basis for updates 
with the Zone component.</li><li>The zone's own body (using Zone's getBody() 
method)</li><li>null (to redraw the current page)</li><li>A <a  
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/json/JSONObject.html";>JSONObject</a>
 or <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/json/JSONArray.html";>JSONArray</a>,
 which will be sent as the response.</li><li>A <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/StreamResponse.html";>StreamResponse</a>,
 which will be sent as the response.</li><li>A <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/Link.html";>Link</a>,
 which wil
 l send a redirect to the client.</li><li>A page name (as a String), or a page 
class, or a page instance, which will send a redirect to the indicated 
page.</li></ul><p>See <a  href="ajax-and-zones.html">Ajax and Zones</a> for 
full descriptions of the above.</p><h3 
id="AjaxandZones-GracefulDegradation">Graceful Degradation</h3><p>Users who do 
not have JavaScript enabled may click EventLinks (or ActionLinks, or Forms) 
that are configured to update a Zone. When that occurs, the request will still 
be sent to the server, but Tapestry will handle it as a <em>traditional</em> 
request.</p><p>This happens automatically when your event handler method has a 
void return type.</p><p>However, to support graceful degradation when your 
event handler method has a <em>non-void</em> return type, you should detect 
non-Ajax requests and return a traditional response, typically null to redraw 
the whole page. This is accomplished by injecting the <a  class="external-link" 
href="http://tapestry.apache.org/c
 urrent/apidocs/org/apache/tapestry5/services/Request.html">Request</a> object, 
and invoking the isXHR() method. This value will be true for Ajax requests, and 
false for traditional request.</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
 private Request request;
 
@@ -241,7 +241,7 @@ void onActionFromRegister()
         userInput).addRender("helpPanel", helpPanel);
 }
 </pre>
-</div></div><p><span style="line-height: 1.4285715;">This example assumes that 
there are two zones, "userInput" and "helpPanel", somewhere in the rendered 
page, waiting to receive the updated content.</span></p><p><span 
style="line-height: 1.4285715;">&#160;</span></p><div 
class="confluence-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>In this example, the Zone receives 
the update but does not provide any content. That's OK, the other client-side 
elements (<code>userInput</code> and <code>helpPanel</code>) will be updated, 
and the zone's content left unchanged.</p></div></div><p>This demonstrates why 
it is necessary for the developer to specify a particular client-side id for 
Zone components; if they were dynamically allocated ids, as is typical in most 
other elements, it would be impossible for this code to know what client-sid
 e id was used for the Zone.</p><h3 
id="AjaxandZones-ZoneComponentIdvs.ZoneElementId">Zone Component Id vs. Zone 
Element Id</h3><p>Like all Tapestry components, Zones have a component id, 
specified using the <code>t:id</code> attribute. If you do not assign a 
component id, a unique id is assigned by Tapestry.</p><p>However, to coordinate 
things on the client side, it is necessary for components that wish to update 
the zone know the <em>client-side element id</em>. This is specified with the 
<code>id</code> parameter of the Zone component. If the <code>id</code> 
parameter is not bound, then a unique value (for the current page and render) 
is generated by Tapestry and this value is difficult to predict. (The actual 
value will be available as the <code>clientId</code> property of the Zone 
component itself.)</p><p>Remember that the component id (<code>t:id</code>) is 
used to <em>inject</em> the Zone component into the containing page or 
component. The client-side id (<code>id</code>) is 
 used on the client side to orchestrate requests and updates. You will often 
seen the following construct:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p><span>This example assumes that there are two zones, 
"userInput" and "helpPanel", somewhere in the rendered page, waiting to receive 
the updated content.</span></p><p><span>&#160;</span></p><div 
class="confluence-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>In this example, the Zone receives 
the update but does not provide any content. That's OK, the other client-side 
elements (<code>userInput</code> and <code>helpPanel</code>) will be updated, 
and the zone's content left unchanged.</p></div></div><p>This demonstrates why 
it is necessary for the developer to specify a particular client-side id for 
Zone components; if they were dynamically allocated ids, as is typical in most 
other elements, it would be impossible for this code to know what client-side 
id was used for the Zone.</p><h3 id="AjaxandZones-ZoneComponen
 tIdvs.ZoneElementId">Zone Component Id vs. Zone Element Id</h3><p>Like all 
Tapestry components, Zones have a component id, specified using the 
<code>t:id</code> attribute. If you do not assign a component id, a unique id 
is assigned by Tapestry.</p><p>However, to coordinate things on the client 
side, it is necessary for components that wish to update the zone know the 
<em>client-side element id</em>. This is specified with the <code>id</code> 
parameter of the Zone component. If the <code>id</code> parameter is not bound, 
then a unique value (for the current page and render) is generated by Tapestry 
and this value is difficult to predict. (The actual value will be available as 
the <code>clientId</code> property of the Zone component 
itself.)</p><p>Remember that the component id (<code>t:id</code>) is used to 
<em>inject</em> the Zone component into the containing page or component. The 
client-side id (<code>id</code>) is used on the client side to orchestrate 
requests and updates. You
  will often seen the following construct:</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;">&lt;t:zone t:id="myZone" id="myzone"&gt; ... 
&lt;/t:zone&gt;
 </pre>
 </div></div><h3 id="AjaxandZones-TheContainingZone(zone=&quot;^&quot;)">The 
Containing Zone (zone="^")</h3><p><em><strong>Since 5.2</strong></em></p><p>If 
the Form or Link is enclosed by the Zone itself, and you're using 
the&#160;<code>zone</code> parameter instead of the&#160;<code>async</code> 
parameter, then the&#160;<code>zone</code> parameter may be set to the special 
value&#160;<strong><code>^</code></strong><code> (the carat)</code>. The zone 
is found&#160;&#8211; on the client side&#160;&#8211; by searching up form the 
form or link element for the first enclosing element that is a Zone. In this 
way, the client-side coordination can occur without having to know what the 
specific client-side id of the Zone is. Because of this, in some cases it is no 
longer necessary to specify the Zone's&#160;<code>id</code> parameter.</p><h3 
id="AjaxandZones-AnUpdatedivwithinaZonediv(Tapestry5.3andearlier)">An Update 
div within a Zone div (Tapestry 5.3 and earlier)</h3><p><em><strong>Deprecat
 ed</strong><strong>:</strong> This feature is removed starting with Tapestry 
5.4</em></p><p>In many situations, a Zone is a kind of "wrapper" or "container" 
for dynamic content; one that provides a look and feel ... a bit of wrapping 
markup to create a border. In that situation, the Zone &lt;div&gt; may contain 
an update &lt;div&gt;.</p><p>An Update &lt;div&gt; is specifically a 
&lt;div&gt; element marked with the CSS class "t-zone-update", <em>inside</em> 
the Zone's &lt;div&gt;.</p><p>If an Update div exists within a Zone div, then 
when Tapestry updates a zone only the update &lt;div&gt;'s content will be 
changed, rather than the entire Zone &lt;div&gt;.</p><p>The show and update 
functions (see Zone Functions, below) apply to the Zone &lt;div&gt;, not just 
the update &lt;div&gt;.</p><h3 
id="AjaxandZones-ZoneEffectFunctions(Tapestry5.3andearlier)">Zone Effect 
Functions (Tapestry 5.3 and 
earlier)</h3><p><strong><em>Deprecated:</em></strong> This feature refers to 
client-side logic on
 ly present in Tapestry 5.3 or earlier. For 5.4, there are client-side events 
that are triggered before and after changes to the Zone; listeners on those 
events can trigger whatever animations they like.</p><p>A Zone may be initially 
visible or invisible. When a Zone is updated, it is made visible if not 
currently so. This is accomplished via a function on the Tapestry.ElementEffect 
client-side object. By default, the show() function is used for this purpose. 
If you want Tapestry to call a different Tapestry.ElementEffect function when 
updates occur, specify its name with the zone's show parameter.</p><p>If a Zone 
is already visible, then a different effect function is used to highlight the 
change. By default, the highlight() function is called, which performs a yellow 
fade to highlight that the content of the Zone has changed. Alternatively, you 
can specify a different effect function with the Zone's update 
parameter:</p><div class="table-wrap"><table class="confluenceTable"><tbody>
 <tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Tapestry.ElementEffect 
Function</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Result</p></th></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>highlight()</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>(the default) highlight changes to an already-visible 
zone</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>show()</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>make the zone visible if it isn't already 
visible</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>slidedown()</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>scroll the content down</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p>slideup()</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>slide the content back up 
(opposite of slidedown)</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>fade()</p></td><td colspan="1" ro
 wspan="1" class="confluenceTd"><p>fade the content out (opposite of 
show)</p></td></tr></tbody></table></div><p>To have Tapestry update a zone 
without the usual yellow highlight effect, just specify "show" for the update 
parameter:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
@@ -251,7 +251,7 @@ void onActionFromRegister()
 </pre>
 </div></div><h3 id="AjaxandZones-ZoneLimitations">Zone 
Limitations</h3><p>Unlike many other situations, Tapestry relies on you to 
specify useful and unique ids to Zone components, then reference those ids 
inside EventLink (or ActionLink, or Form) components. Using Zone components 
inside any kind of loop may cause additional problems, as Tapestry will 
<em>uniqueify</em> the client id you specify (appending an index 
number).</p><p>If you create a component that contains a zone, and you use that 
component in a loop, you'll likely need to set the client-side id like 
this:</p><p>&#160;</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;">&lt;t:zone t:id="myzone" 
id="prop:componentResources.id"&gt;</pre>
-</div></div><p>&#160;</p><p>See <a  class="external-link" 
href="http://jumpstart.doublenegative.com.au/jumpstart7/examples/ajax/components1";
 rel="nofollow">this JumpStart Example</a> for details.</p><p>The show and 
update function names (Tapestry 5.3 and earlier only) are converted to lower 
case; all the methods of Tapestry.ElementEffect should have all lower-case 
names. Because client-side JavaScript is so fluid (new methods may be added to 
existing objects), Tapestry makes no attempt to validate the function names ... 
however, if the names are not valid, then the default show and highlight 
methods will be used.</p><p>Zones may only be used inside the <em>body</em> of 
a page, not the head<em>.</em></p><h3 id="AjaxandZones-MoreInformation">More 
Information</h3><p>For examples of extending a Form with a Zone and updating 
multiple zones at once, see the <a  href="ajax-components-faq.html">Ajax 
Components FAQ</a>.</p><p>There are also a number of Ajax-related examples at 
the&#160;&#160
 ;<a  class="external-link" 
href="http://jumpstart.doublenegative.com.au/jumpstart7/"; rel="nofollow"><span 
class="confluence-link">Tapestry JumpStart</span></a> site.</p><p><span 
class="confluence-anchor-link" id="AjaxandZones-autocomplete"></span></p><h2 
id="AjaxandZones-AutocompleteMixin">Autocomplete Mixin</h2><p></p><div 
class="navmenu" style="float:right; background:#eee; margin:3px; padding:0 1em">
+</div></div><p>&#160;</p><p>See <a  class="external-link" 
href="http://jumpstart.doublenegative.com.au/jumpstart7/examples/ajax/components1";
 rel="nofollow">this JumpStart Example</a> for details.</p><p>The show and 
update function names (Tapestry 5.3 and earlier only) are converted to lower 
case; all the methods of Tapestry.ElementEffect should have all lower-case 
names. Because client-side JavaScript is so fluid (new methods may be added to 
existing objects), Tapestry makes no attempt to validate the function names ... 
however, if the names are not valid, then the default show and highlight 
methods will be used.</p><p>Zones may only be used inside the <em>body</em> of 
a page, not the head<em>.</em></p><h3 id="AjaxandZones-MoreInformation">More 
Information</h3><p>For examples of extending a Form with a Zone and updating 
multiple zones at once, see the <a  href="ajax-and-zones.html">Ajax and 
Zones</a>.</p><p>There are also a number of Ajax-related examples at 
the&#160;&#160;<a  class
 ="external-link" href="http://jumpstart.doublenegative.com.au/jumpstart7/"; 
rel="nofollow"><span class="confluence-link">Tapestry JumpStart</span></a> 
site.</p><p><span class="confluence-anchor-link" 
id="AjaxandZones-autocomplete"></span></p><h2 
id="AjaxandZones-AutocompleteMixin">Autocomplete Mixin</h2><p></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/ajax/autocompletemixin";
 rel="nofollow">Autocomplete Mixin</a></p></div>The <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/Autocomplete.html";>Autocomplete</a>
 mixin exists to allow a text field to query the server for completions for a 
partially entered phrase. It is often used in situations where the field exists 
to select a single value from a large set, too large to successfully download 
to the client as a drop down list; for example, when the number of values to 
select from is numbered in the thousands.<p>Autocomplete can be added to an 
existing text field:</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;">  &lt;t:textfield t:id="accountName" 
t:mixins="autocomplete" size="100"/&gt;

Modified: websites/production/tapestry/content/aliases.html
==============================================================================
--- websites/production/tapestry/content/aliases.html (original)
+++ websites/production/tapestry/content/aliases.html Sat Feb  3 17:21:22 2018
@@ -149,7 +149,7 @@
 </div>
 
 
-<p>&#160;</p><p>See <a  href="ioc-cookbook-overriding-ioc-services.html">IoC 
Cookbook - Overriding IoC Services</a></p><h1 
id="Aliases-Introduction">Introduction</h1><p>Tapestry goes to great lengths so 
that you can use the <a  href="injection.html">Inject</a> annotation on a field 
and provide no additional data, yet end up with the correct object or 
service.</p><p>In many cases, Tapestry must match a field type to an available 
IoC service.</p><p>If there is only single service in the registry that 
implements the service, Tapestry will utilize that service.</p><p>When there is 
more than one such service, it is necessary to disambiguate which service is to 
be injected. To disambiguate globally (across all injections), you must create 
an alias from the service interface directly to the particular 
service.</p><p>This takes the form of a contribution to the Alias 
service.</p><p>The Alias service has additional purposes: first, it allows for 
spot overrides on injected services, based on 
 the application's mode. Currently, the only mode is "servlet", but future 
modes may include "portlet" and possibly "offline".</p><p>Secondly, the 
companion AliasOverrides service configuration allows for spot overrides of 
specific services, without disturbing the rest of the network of services 
within the IoC Registry.</p><h1 id="Aliases-ContributinganAlias">Contributing 
an Alias</h1><p>To contribute a new service to the Alias service, you must 
first decide on a logical name. Often, this is the name of the service 
interface implemented by the service.</p><p>You can then contribute into the 
Infrastructure service's configuration:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<p>&#160;</p><p>See <a  href="aliases.html">Aliases</a></p><h1 
id="Aliases-Introduction">Introduction</h1><p>Tapestry goes to great lengths so 
that you can use the <a  href="aliases.html">Inject</a> annotation on a field 
and provide no additional data, yet end up with the correct object or 
service.</p><p>In many cases, Tapestry must match a field type to an available 
IoC service.</p><p>If there is only single service in the registry that 
implements the service, Tapestry will utilize that service.</p><p>When there is 
more than one such service, it is necessary to disambiguate which service is to 
be injected. To disambiguate globally (across all injections), you must create 
an alias from the service interface directly to the particular 
service.</p><p>This takes the form of a contribution to the Alias 
service.</p><p>The Alias service has additional purposes: first, it allows for 
spot overrides on injected services, based on the application's mode. 
Currently, the only mode is "servlet",
  but future modes may include "portlet" and possibly 
"offline".</p><p>Secondly, the companion AliasOverrides service configuration 
allows for spot overrides of specific services, without disturbing the rest of 
the network of services within the IoC Registry.</p><h1 
id="Aliases-ContributinganAlias">Contributing an Alias</h1><p>To contribute a 
new service to the Alias service, you must first decide on a logical name. 
Often, this is the name of the service interface implemented by the 
service.</p><p>You can then contribute into the Infrastructure service's 
configuration:</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;">public static void 
contributeAlias(@InjectService("MyService") MyService myService,
         Configuration&lt;AliasContribution&gt; configuration)
 {

Modified: websites/production/tapestry/content/autoloading-modules.html
==============================================================================
--- websites/production/tapestry/content/autoloading-modules.html (original)
+++ websites/production/tapestry/content/autoloading-modules.html Sat Feb  3 
17:21:22 2018
@@ -46,13 +46,26 @@
 
   <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="navigation"><div class="nav"><ul class="alternate"><li><a  
href="index.html">Home</a></li><li><a  href="getting-started.html">Getting 
Started</a></li><li><a  href="documentation.html">Documentation</a></li><li><a  
href="download.html">Download</a></li><li><a  
href="about.html">About</a></li><li><a  class="external-link" 
href="http://www.apache.org/licenses/LICENSE-2.0";>License</a></li><li><a  
href="community.html">Community</a></li><li><a  class="external-link" 
href="http://www.apache.org/security/";>Security</a></li><li><a  
class="external-link" href="http://www.apache.org/";>Apache</a></li><li><a  
class="external-link" 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li><li><a
  class="external-link" 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li></ul></div>
+
+</div>
 
           <div id="top">
-            <div id="smallbanner"><div class="searchbox" 
style="float:right;margin: .3em 1em .1em 1em"><span style="color: #999; 
font-size: 90%">Tapestry docs, issues, wikis &amp; blogs:</span><form 
enctype="application/x-www-form-urlencoded" method="get" 
action="http://tapestry.apache.org/search.html";> 
- <input type="text" name="q"> 
- <input type="submit" value="Search"> 
-</form></div><div class="emblem" style="float:left"><p><a  
href="index.html"><span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image confluence-external-resource" 
src="http://tapestry.apache.org/images/tapestry_small.png"; 
data-image-src="http://tapestry.apache.org/images/tapestry_small.png";></span></a></p></div><div
 class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">Autoloading Modules</h1></div></div>
+            <div id="smallbanner"><div class="searchbox" 
style="float:right;margin: .3em 1em .1em 1em"><span style="color: #999; 
font-size: 90%">Tapestry docs, issues, wikis &amp; blogs:</span>
+<form enctype="application/x-www-form-urlencoded" method="get" 
action="http://tapestry.apache.org/search.html";>
+  <input type="text" name="q">
+  <input type="submit" value="Search">
+</form>
+
+</div>
+
+
+<div class="emblem" style="float:left"><p><a  href="index.html"><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-external-resource" 
src="http://tapestry.apache.org/images/tapestry_small.png"; 
data-image-src="http://tapestry.apache.org/images/tapestry_small.png";></span></a></p></div>
+
+
+<div class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">Autoloading Modules</h1></div>
+
+</div>
       <div class="clearer"></div>
       </div>
 
@@ -64,7 +77,7 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p><strong>Autoloading of 
modules</strong> allows new features to be added to an application just by 
"dropping in" a JAR that contains a module: the services in the module are 
automatically integrated into the overall service registry, along with any 
configuration or other supporting code and resources.</p><p>An example of this 
is the <a  href="uploading-files.html">tapestry-upload</a> library, which 
introduces an Upload component, along with supporting services related to 
handling file upload requests.</p><p>The core Tapestry IoC module is 
automatically included. When using the Tapestry web framework, the core 
Tapestry module is also included, as is an optional per-application module, 
plus any autoloaded modules.</p><p>Module autoloading isn't 100% free ... you 
must tell Tapestry IoC where the modules to load are located, which can be done 
via a Manifest file entry, or via an annotation.</p><h1 
id="AutoloadingModules-JARManifestEntries">J
 AR Manifest Entries</h1><p>When setting up the registry, Tapestry can 
automatically locate modules packaged into JARs. It does this by searching for 
a particular global manifest entry.</p><p>The manifest entry name is 
"Tapestry-Module-Classes". The value is a comma-separated list of fully 
qualified class names of module classes (this allows a single JAR to contain 
multiple, related modules). Whitespace is ignored.</p><p>Example:</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+                <div id="ConfluenceContent"><p><strong>Autoloading of 
modules</strong> allows new features to be added to an application just by 
"dropping in" a JAR that contains a module: the services in the module are 
automatically integrated into the overall service registry, along with any 
configuration or other supporting code and resources.</p><p>An example of this 
is the <a  href="autoloading-modules.html">tapestry-upload</a> library, which 
introduces an Upload component, along with supporting services related to 
handling file upload requests.</p><p>The core Tapestry IoC module is 
automatically included. When using the Tapestry web framework, the core 
Tapestry module is also included, as is an optional per-application module, 
plus any autoloaded modules.</p><p>Module autoloading isn't 100% free ... you 
must tell Tapestry IoC where the modules to load are located, which can be done 
via a Manifest file entry, or via an annotation.</p><h1 
id="AutoloadingModules-JARManifestEntrie
 s">JAR Manifest Entries</h1><p>When setting up the registry, Tapestry can 
automatically locate modules packaged into JARs. It does this by searching for 
a particular global manifest entry.</p><p>The manifest entry name is 
"Tapestry-Module-Classes". The value is a comma-separated list of fully 
qualified class names of module classes (this allows a single JAR to contain 
multiple, related modules). Whitespace is ignored.</p><p>Example:</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <pre class="brush: text; gutter: false; theme: Default" 
style="font-size:12px;">Manifest-Version: 1.0
 Tapestry-Module-Classes: org.example.mylib.LibModule, 
org.example.mylib.internal.InternalModule</pre>
 </div></div><p>If you are using Maven 2, then getting these entries into your 
JAR's manifest is as simple as some configuration in your pom.xml:</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">

Modified: websites/production/tapestry/content/bean-validation.html
==============================================================================
--- websites/production/tapestry/content/bean-validation.html (original)
+++ websites/production/tapestry/content/bean-validation.html Sat Feb  3 
17:21:22 2018
@@ -115,7 +115,7 @@
 </div>
 
 
-<p>Tapestry has always provided a powerful non-JSR 303 validation mechanism 
(see <a  href="forms-and-validation.html">Forms and Validation</a>). Among 
other things this mechanism allows you to annotate your domain model classes 
with the <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/beaneditor/Validate.html";>@Validate</a>
 annotation. However, this annotation is problematic if your domain model is 
used in non-Tapestry applications as well as in Tapestry applications. Your 
non-Tapestry application becomes dependent on <em>tapestry5-annotations</em> 
module. To make your domain model independent from Tapestry you can use the <a  
class="external-link" href="http://jcp.org/en/jsr/detail?id=303"; 
rel="nofollow">JSR 303: Bean Validation</a> instead. This library provides 
integration between Tapestry and JSR-303.</p><h2 
id="BeanValidation-Configuration">Configuration</h2><p>The Tapestry's JSR 303 - 
Bean Validation Library is responsible for con
 figuring and bootstrapping the <a  class="external-link" 
href="http://download.oracle.com/javaee/6/api/javax/validation/Validator.html"; 
rel="nofollow">Validator</a> for you. In order to use this library you have to 
choose an implementation of the JSR-303 specification like <a  
class="external-link" href="https://www.hibernate.org/412.html"; 
rel="nofollow">Hibernate Validator 4.x</a>. This library is not specific to any 
implementation of JSR-303 and will work with any implementation of your 
choice.</p><h3 id="BeanValidation-BootstrapingtheBeanValidator">Bootstraping 
the Bean Validator</h3><p>The <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/beanvalidator/BeanValidatorSource.html";>BeanValidatorSource</a>
 service is responsible for bootstrapping the <a  class="external-link" 
href="http://download.oracle.com/javaee/6/api/javax/validation/Validator.html"; 
rel="nofollow">Validator</a>. You can contribute a <a  class="external-link" 
href="htt
 
p://tapestry.apache.org/current/apidocs/org/apache/tapestry5/beanvalidator/BeanValidatorConfigurer.html">BeanValidatorConfigurer</a>
 to the configuration of this service in order to participate on the 
configuration of <a  class="external-link" 
href="http://download.oracle.com/javaee/6/api/javax/validation/Validator.html"; 
rel="nofollow">Validator</a>.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<p>Tapestry has always provided a powerful non-JSR 303 validation mechanism 
(see <a  href="bean-validation.html">Bean Validation</a>). Among other things 
this mechanism allows you to annotate your domain model classes with the <a  
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/beaneditor/Validate.html";>@Validate</a>
 annotation. However, this annotation is problematic if your domain model is 
used in non-Tapestry applications as well as in Tapestry applications. Your 
non-Tapestry application becomes dependent on <em>tapestry5-annotations</em> 
module. To make your domain model independent from Tapestry you can use the <a  
class="external-link" href="http://jcp.org/en/jsr/detail?id=303"; 
rel="nofollow">JSR 303: Bean Validation</a> instead. This library provides 
integration between Tapestry and JSR-303.</p><h2 
id="BeanValidation-Configuration">Configuration</h2><p>The Tapestry's JSR 303 - 
Bean Validation Library is responsible for configuring a
 nd bootstrapping the <a  class="external-link" 
href="http://download.oracle.com/javaee/6/api/javax/validation/Validator.html"; 
rel="nofollow">Validator</a> for you. In order to use this library you have to 
choose an implementation of the JSR-303 specification like <a  
class="external-link" href="https://www.hibernate.org/412.html"; 
rel="nofollow">Hibernate Validator 4.x</a>. This library is not specific to any 
implementation of JSR-303 and will work with any implementation of your 
choice.</p><h3 id="BeanValidation-BootstrapingtheBeanValidator">Bootstraping 
the Bean Validator</h3><p>The <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/beanvalidator/BeanValidatorSource.html";>BeanValidatorSource</a>
 service is responsible for bootstrapping the <a  class="external-link" 
href="http://download.oracle.com/javaee/6/api/javax/validation/Validator.html"; 
rel="nofollow">Validator</a>. You can contribute a <a  class="external-link" 
href="http://tapest
 
ry.apache.org/current/apidocs/org/apache/tapestry5/beanvalidator/BeanValidatorConfigurer.html">BeanValidatorConfigurer</a>
 to the configuration of this service in order to participate on the 
configuration of <a  class="external-link" 
href="http://download.oracle.com/javaee/6/api/javax/validation/Validator.html"; 
rel="nofollow">Validator</a>.</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;">@Contribute(BeanValidatorSource.class)
 public static void 
provideBeanValidatorConfigurer(OrderedConfiguration&lt;BeanValidatorConfigurer&gt;
 configuration)
 {

Modified: websites/production/tapestry/content/built-in-modules.html
==============================================================================
--- websites/production/tapestry/content/built-in-modules.html (original)
+++ websites/production/tapestry/content/built-in-modules.html Sat Feb  3 
17:21:22 2018
@@ -36,13 +36,26 @@
 
   <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="navigation"><div class="nav"><ul class="alternate"><li><a  
href="index.html">Home</a></li><li><a  href="getting-started.html">Getting 
Started</a></li><li><a  href="documentation.html">Documentation</a></li><li><a  
href="download.html">Download</a></li><li><a  
href="about.html">About</a></li><li><a  class="external-link" 
href="http://www.apache.org/licenses/LICENSE-2.0";>License</a></li><li><a  
href="community.html">Community</a></li><li><a  class="external-link" 
href="http://www.apache.org/security/";>Security</a></li><li><a  
class="external-link" href="http://www.apache.org/";>Apache</a></li><li><a  
class="external-link" 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li><li><a
  class="external-link" 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li></ul></div>
+
+</div>
 
           <div id="top">
-            <div id="smallbanner"><div class="searchbox" 
style="float:right;margin: .3em 1em .1em 1em"><span style="color: #999; 
font-size: 90%">Tapestry docs, issues, wikis &amp; blogs:</span><form 
enctype="application/x-www-form-urlencoded" method="get" 
action="http://tapestry.apache.org/search.html";> 
- <input type="text" name="q"> 
- <input type="submit" value="Search"> 
-</form></div><div class="emblem" style="float:left"><p><a  
href="index.html"><span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image confluence-external-resource" 
src="http://tapestry.apache.org/images/tapestry_small.png"; 
data-image-src="http://tapestry.apache.org/images/tapestry_small.png";></span></a></p></div><div
 class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">Built In Modules</h1></div></div>
+            <div id="smallbanner"><div class="searchbox" 
style="float:right;margin: .3em 1em .1em 1em"><span style="color: #999; 
font-size: 90%">Tapestry docs, issues, wikis &amp; blogs:</span>
+<form enctype="application/x-www-form-urlencoded" method="get" 
action="http://tapestry.apache.org/search.html";>
+  <input type="text" name="q">
+  <input type="submit" value="Search">
+</form>
+
+</div>
+
+
+<div class="emblem" style="float:left"><p><a  href="index.html"><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-external-resource" 
src="http://tapestry.apache.org/images/tapestry_small.png"; 
data-image-src="http://tapestry.apache.org/images/tapestry_small.png";></span></a></p></div>
+
+
+<div class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">Built In Modules</h1></div>
+
+</div>
       <div class="clearer"></div>
       </div>
 
@@ -54,26 +67,7 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p>Tapestry comes with a 
collection of add-on modules to let you extend the framework beyond its 
core.</p>
-
-<h3 id="BuiltInModules-HibernateIntegration">Hibernate Integration</h3>
-
-<ul><li><a  href="hibernate-core-conf.html">Hibernate 
Configuration</a></li><li><a  href="hibernate-user-guide.html">Hibernate User 
Guide</a></li><li><a  href="hibernate-statistics.html">Hibernate 
Statistics</a></li></ul>
-
-
-<h3 id="BuiltInModules-SpringIntegration">Spring Integration</h3>
-
-<ul><li><a  href="integrating-with-spring-framework.html">Spring 
Core</a></li></ul>
-
-
-<h3 id="BuiltInModules-JPAIntegration">JPA Integration</h3>
-
-<ul><li><a  href="integrating-with-jpa.html">Integrating with JPA</a></li></ul>
-
-
-<h3 id="BuiltInModules-OtherModules">Other Modules</h3>
-
-<ul><li><a  href="bean-validation.html">JSR 303 Bean Validation</a></li><li><a 
 href="functional-flows.html">Functional Flows</a></li><li><a  
href="jmx-module.html">JMX Integration</a></li><li><a  
href="json.html">JSON</a></li><li><a  href="component-report.html">Component 
Report</a></li></ul></div>
+                <div id="ConfluenceContent"><p>Tapestry comes with a 
collection of add-on modules to let you extend the framework beyond its 
core.</p><h3 id="BuiltInModules-HibernateIntegration">Hibernate 
Integration</h3><ul><li><a  href="hibernate-core-conf.html">Hibernate 
Configuration</a></li><li><a  href="hibernate-user-guide.html">Hibernate User 
Guide</a></li><li><a  href="hibernate-statistics.html">Hibernate 
Statistics</a></li></ul><h3 id="BuiltInModules-SpringIntegration">Spring 
Integration</h3><ul><li><a  
href="integrating-with-spring-framework.html">Spring Core</a></li></ul><h3 
id="BuiltInModules-JPAIntegration">JPA Integration</h3><ul><li><a  
href="integrating-with-jpa.html">Integrating with JPA</a></li></ul><h3 
id="BuiltInModules-OtherModules">Other Modules</h3><ul><li><a  
href="bean-validation.html">JSR 303 Bean Validation</a></li><li><a  
href="functional-flows.html">Functional Flows</a></li><li><a  
href="jmx-module.html">JMX Integration</a></li><li><a  href="json.html">
 JSON</a></li><li><a  href="component-report.html">Component 
Report</a></li></ul></div>
       </div>
 
       <div class="clearer"></div>

Modified: websites/production/tapestry/content/cache/main.pageCache
==============================================================================
Binary files - no diff available.

Modified: websites/production/tapestry/content/case-insensitivity.html
==============================================================================
--- websites/production/tapestry/content/case-insensitivity.html (original)
+++ websites/production/tapestry/content/case-insensitivity.html Sat Feb  3 
17:21:22 2018
@@ -36,13 +36,26 @@
 
   <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="navigation"><div class="nav"><ul class="alternate"><li><a  
href="index.html">Home</a></li><li><a  href="getting-started.html">Getting 
Started</a></li><li><a  href="documentation.html">Documentation</a></li><li><a  
href="download.html">Download</a></li><li><a  
href="about.html">About</a></li><li><a  class="external-link" 
href="http://www.apache.org/licenses/LICENSE-2.0";>License</a></li><li><a  
href="community.html">Community</a></li><li><a  class="external-link" 
href="http://www.apache.org/security/";>Security</a></li><li><a  
class="external-link" href="http://www.apache.org/";>Apache</a></li><li><a  
class="external-link" 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li><li><a
  class="external-link" 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li></ul></div>
+
+</div>
 
           <div id="top">
-            <div id="smallbanner"><div class="searchbox" 
style="float:right;margin: .3em 1em .1em 1em"><span style="color: #999; 
font-size: 90%">Tapestry docs, issues, wikis &amp; blogs:</span><form 
enctype="application/x-www-form-urlencoded" method="get" 
action="http://tapestry.apache.org/search.html";> 
- <input type="text" name="q"> 
- <input type="submit" value="Search"> 
-</form></div><div class="emblem" style="float:left"><p><a  
href="index.html"><span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image confluence-external-resource" 
src="http://tapestry.apache.org/images/tapestry_small.png"; 
data-image-src="http://tapestry.apache.org/images/tapestry_small.png";></span></a></p></div><div
 class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">Case Insensitivity</h1></div></div>
+            <div id="smallbanner"><div class="searchbox" 
style="float:right;margin: .3em 1em .1em 1em"><span style="color: #999; 
font-size: 90%">Tapestry docs, issues, wikis &amp; blogs:</span>
+<form enctype="application/x-www-form-urlencoded" method="get" 
action="http://tapestry.apache.org/search.html";>
+  <input type="text" name="q">
+  <input type="submit" value="Search">
+</form>
+
+</div>
+
+
+<div class="emblem" style="float:left"><p><a  href="index.html"><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-external-resource" 
src="http://tapestry.apache.org/images/tapestry_small.png"; 
data-image-src="http://tapestry.apache.org/images/tapestry_small.png";></span></a></p></div>
+
+
+<div class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">Case Insensitivity</h1></div>
+
+</div>
       <div class="clearer"></div>
       </div>
 
@@ -54,7 +67,7 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p>Ever get frustrated because you 
typed the right thing with the wrong case and your system blew up? We 
do.</p><p>Tapestry IoC attempts to be case insensitive for all the main 
constructs:</p><ul><li>Service ids.</li><li>Object provider 
prefixes.</li><li>Message keys.<br clear="none"> Thus, <code>getService("Baz", 
Baz.class)</code> is preferred, but <code>getService("BAZ", Baz.class)</code> 
(or any variation thereof) will work just exactly as well. This also extends to 
other naming conventions, such as <code>contributeFoo</code> methods. It also 
applies to values inside annotations.</li></ul><p>Just case is ignored &#8211; 
other punctuation, as well as whitespace, must exactly match.</p><p>Under the 
covers, this is supported by the <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/util/CaseInsensitiveMap.html";>CaseInsensitiveMap</a>
 class.</p><p>&#160;</p><p></p></div>
+                <div id="ConfluenceContent"><p>Ever get frustrated because you 
typed the right thing with the wrong case and your system blew up? We 
do.</p><p>Tapestry IoC attempts to be case insensitive for all the main 
constructs:</p><ul><li>Service ids.</li><li>Object provider 
prefixes.</li><li>Message keys.</li></ul><p>Thus, <code>getService("Baz", 
Baz.class)</code> is preferred, but <code>getService("BAZ", Baz.class)</code> 
(or any variation thereof) will work just exactly as well. This also extends to 
other naming conventions, such as <code>contributeFoo</code> methods. It also 
applies to values inside annotations.</p><p>Just case is ignored &#8211; other 
punctuation, as well as whitespace, must exactly match.</p><p>Under the covers, 
this is supported by the <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/util/CaseInsensitiveMap.html";>CaseInsensitiveMap</a>
 class.</p><p>&#160;</p><p></p></div>
       </div>
 
       <div class="clearer"></div>

Modified: websites/production/tapestry/content/chainbuilder-service.html
==============================================================================
--- websites/production/tapestry/content/chainbuilder-service.html (original)
+++ websites/production/tapestry/content/chainbuilder-service.html Sat Feb  3 
17:21:22 2018
@@ -44,13 +44,26 @@
 
   <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="navigation"><div class="nav"><ul class="alternate"><li><a  
href="index.html">Home</a></li><li><a  href="getting-started.html">Getting 
Started</a></li><li><a  href="documentation.html">Documentation</a></li><li><a  
href="download.html">Download</a></li><li><a  
href="about.html">About</a></li><li><a  class="external-link" 
href="http://www.apache.org/licenses/LICENSE-2.0";>License</a></li><li><a  
href="community.html">Community</a></li><li><a  class="external-link" 
href="http://www.apache.org/security/";>Security</a></li><li><a  
class="external-link" href="http://www.apache.org/";>Apache</a></li><li><a  
class="external-link" 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li><li><a
  class="external-link" 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li></ul></div>
+
+</div>
 
           <div id="top">
-            <div id="smallbanner"><div class="searchbox" 
style="float:right;margin: .3em 1em .1em 1em"><span style="color: #999; 
font-size: 90%">Tapestry docs, issues, wikis &amp; blogs:</span><form 
enctype="application/x-www-form-urlencoded" method="get" 
action="http://tapestry.apache.org/search.html";> 
- <input type="text" name="q"> 
- <input type="submit" value="Search"> 
-</form></div><div class="emblem" style="float:left"><p><a  
href="index.html"><span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image confluence-external-resource" 
src="http://tapestry.apache.org/images/tapestry_small.png"; 
data-image-src="http://tapestry.apache.org/images/tapestry_small.png";></span></a></p></div><div
 class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">ChainBuilder Service</h1></div></div>
+            <div id="smallbanner"><div class="searchbox" 
style="float:right;margin: .3em 1em .1em 1em"><span style="color: #999; 
font-size: 90%">Tapestry docs, issues, wikis &amp; blogs:</span>
+<form enctype="application/x-www-form-urlencoded" method="get" 
action="http://tapestry.apache.org/search.html";>
+  <input type="text" name="q">
+  <input type="submit" value="Search">
+</form>
+
+</div>
+
+
+<div class="emblem" style="float:left"><p><a  href="index.html"><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-external-resource" 
src="http://tapestry.apache.org/images/tapestry_small.png"; 
data-image-src="http://tapestry.apache.org/images/tapestry_small.png";></span></a></p></div>
+
+
+<div class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">ChainBuilder Service</h1></div>
+
+</div>
       <div class="clearer"></div>
       </div>
 
@@ -62,37 +75,67 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p>The <strong>ChainBuilder 
Service</strong> is a built-in service used to implement of one of the most 
useful of the <em>Gang Of Four</em> design patterns, the&#160;<a  
class="external-link" 
href="https://en.wikipedia.org/wiki/Chain-of-responsibility_pattern"; 
rel="nofollow">chain of responsibility</a>.</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="chainbuilder-service.html">ChainBuilder Service</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="shadowbuilder-service.html">ShadowBuilder Service</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="ioc-cookbook-patterns.html">IoC Cookbook - Patterns</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="strategybuilder-service.html">StrategyBuilder Service</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="pipelinebuilder-service.html">PipelineBuilder Service</a> 
-  </div> </li></ul></div><p>With the chain of responsibility design pattern, a 
complex process is broken down into many individual steps. Each step is a 
<em>command</em> (see <a  class="external-link" 
href="https://en.wikipedia.org/wiki/Command_pattern"; rel="nofollow">command 
pattern</a>). A key part of this is that the commands are expected to implement 
some common interface. The commands are also carefully arranged into a specific 
order.</p><p>The process operates by working down the list of commands, and 
each command is given a chance to operate. In the ChainBuilder service, a 
command can terminate the process either by throwing an exception, or by 
returning true.</p><p>The return type of the command method does not have to be 
boolean: For object types, any non-null value short-circuits the process. For 
numeric type, any non-zero value. For void methods, only throwing an exception 
will short circuit the process.</p><p>Often, the command interface consists of 
a single method. When
  the command interface has multiple methods, each can be thought of as its own 
chain.</p><p>This is a useful pattern because it makes it very easy to 
<em>extend</em> a given process, simply by providing new commands and 
specifying where they fit into the overall process. Most often chain of command 
is combined with an ordered <a  
href="tapestry-ioc-configuration.html">configuration</a> to define what the 
list of commands are (and in what order they should execute).</p><h1 
id="ChainBuilderService-ChainBuilderService">ChainBuilder 
Service</h1><p>Because this pattern is used so often inside Tapestry, a 
built-in service exists to create implementations of the pattern as needed. The 
<a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/ChainBuilder.html";>ChainBuilder</a>
 service takes care of all the work:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+                <div id="ConfluenceContent"><p>The <strong>ChainBuilder 
Service</strong> is a built-in service used to implement of one of the most 
useful of the <em>Gang Of Four</em> design patterns, the&#160;<a  
class="external-link" 
href="https://en.wikipedia.org/wiki/Chain-of-responsibility_pattern"; 
rel="nofollow">chain of responsibility</a>.</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="chainbuilder-service.html">ChainBuilder 
Service</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="shadowbuilder-service.html">ShadowBuilder 
Service</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="ioc-cookbook-patterns.html">IoC Cookbook - 
Patterns</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="strategybuilder-service.html">StrategyBuilder Service</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="pipelinebuilder-service.html">PipelineBuilder Service</a>
+                
+                        
+                    </div>
+    </li></ul>
+</div>
+
+
+<p>With the chain of responsibility design pattern, a complex process is 
broken down into many individual steps. Each step is a <em>command</em> (see <a 
 class="external-link" href="https://en.wikipedia.org/wiki/Command_pattern"; 
rel="nofollow">command pattern</a>). A key part of this is that the commands 
are expected to implement some common interface. The commands are also 
carefully arranged into a specific order.</p><p>The process operates by working 
down the list of commands, and each command is given a chance to operate. In 
the ChainBuilder service, a command can terminate the process either by 
throwing an exception, or by returning true.</p><p>The return type of the 
command method does not have to be boolean: For object types, any non-null 
value short-circuits the process. For numeric type, any non-zero value. For 
void methods, only throwing an exception will short circuit the 
process.</p><p>Often, the command interface consists of a single method. When 
the command interface ha
 s multiple methods, each can be thought of as its own chain.</p><p>This is a 
useful pattern because it makes it very easy to <em>extend</em> a given 
process, simply by providing new commands and specifying where they fit into 
the overall process. Most often chain of command is combined with an ordered <a 
 href="chainbuilder-service.html">configuration</a> to define what the list of 
commands are (and in what order they should execute).</p><h1 
id="ChainBuilderService-ChainBuilderService">ChainBuilder 
Service</h1><p>Because this pattern is used so often inside Tapestry, a 
built-in service exists to create implementations of the pattern as needed. The 
<a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/ChainBuilder.html";>ChainBuilder</a>
 service takes care of all the work:</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;">public interface ChainBuilder
 {
   &lt;T&gt; T build(Class&lt;T&gt; commandInterface, List&lt;T&gt; commands);

Modified: websites/production/tapestry/content/cheat-sheets.html
==============================================================================
--- websites/production/tapestry/content/cheat-sheets.html (original)
+++ websites/production/tapestry/content/cheat-sheets.html Sat Feb  3 17:21:22 
2018
@@ -36,13 +36,26 @@
 
   <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="navigation"><div class="nav"><ul class="alternate"><li><a  
href="index.html">Home</a></li><li><a  href="getting-started.html">Getting 
Started</a></li><li><a  href="documentation.html">Documentation</a></li><li><a  
href="download.html">Download</a></li><li><a  
href="about.html">About</a></li><li><a  class="external-link" 
href="http://www.apache.org/licenses/LICENSE-2.0";>License</a></li><li><a  
href="community.html">Community</a></li><li><a  class="external-link" 
href="http://www.apache.org/security/";>Security</a></li><li><a  
class="external-link" href="http://www.apache.org/";>Apache</a></li><li><a  
class="external-link" 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li><li><a
  class="external-link" 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li></ul></div>
+
+</div>
 
           <div id="top">
-            <div id="smallbanner"><div class="searchbox" 
style="float:right;margin: .3em 1em .1em 1em"><span style="color: #999; 
font-size: 90%">Tapestry docs, issues, wikis &amp; blogs:</span><form 
enctype="application/x-www-form-urlencoded" method="get" 
action="http://tapestry.apache.org/search.html";> 
- <input type="text" name="q"> 
- <input type="submit" value="Search"> 
-</form></div><div class="emblem" style="float:left"><p><a  
href="index.html"><span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image confluence-external-resource" 
src="http://tapestry.apache.org/images/tapestry_small.png"; 
data-image-src="http://tapestry.apache.org/images/tapestry_small.png";></span></a></p></div><div
 class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">Cheat Sheets</h1></div></div>
+            <div id="smallbanner"><div class="searchbox" 
style="float:right;margin: .3em 1em .1em 1em"><span style="color: #999; 
font-size: 90%">Tapestry docs, issues, wikis &amp; blogs:</span>
+<form enctype="application/x-www-form-urlencoded" method="get" 
action="http://tapestry.apache.org/search.html";>
+  <input type="text" name="q">
+  <input type="submit" value="Search">
+</form>
+
+</div>
+
+
+<div class="emblem" style="float:left"><p><a  href="index.html"><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-external-resource" 
src="http://tapestry.apache.org/images/tapestry_small.png"; 
data-image-src="http://tapestry.apache.org/images/tapestry_small.png";></span></a></p></div>
+
+
+<div class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">Cheat Sheets</h1></div>
+
+</div>
       <div class="clearer"></div>
       </div>
 
@@ -54,10 +67,7 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p>These <strong>cheat 
sheets</strong>, or concise sets of reference notes, provide a quick entry 
point or overview for a particular topic.</p>
-
-<ul class="childpages-macro"><li><a  
href="application-module-class-cheat-sheet.html">Application Module Class Cheat 
Sheet</a> &#8212; <span class="smalltext">a guide to what goes in your 
application module (usually AppModule.java)</span></li><li><a  
href="component-cheat-sheet.html">Component Cheat Sheet</a> &#8212; <span 
class="smalltext">the various annotations and methods you can add to Tapestry 
page and component classes</span></li><li><a  
href="tapestry-for-jsf-users.html">Tapestry for JSF Users</a> &#8212; <span 
class="smalltext">a brief guide for learning Tapestry, designed for those who 
already know JavaServer Faces (JSF)</span></li></ul>
-<ul><li><a  class="external-link" 
href="http://refcardz.dzone.com/refcardz/apache-tapestry-50?oid=hom7948"; 
rel="nofollow">Refcard</a> &#8212; A color, six page foldout guide to Tapestry 
5.0 (PDF)</li></ul></div>
+                <div id="ConfluenceContent"><p>These <strong>cheat 
sheets</strong>, or concise sets of reference notes, provide a quick entry 
point or overview for a particular topic.</p><p></p><ul 
class="childpages-macro"><li><a  
href="application-module-class-cheat-sheet.html">Application Module Class Cheat 
Sheet</a></li><li><a  href="component-cheat-sheet.html">Component Cheat 
Sheet</a></li><li><a  href="tapestry-for-jsf-users.html">Tapestry for JSF 
Users</a></li></ul><ul><li><a  class="external-link" 
href="http://refcardz.dzone.com/refcardz/apache-tapestry-50?oid=hom7948"; 
rel="nofollow">Refcard</a> &#8212; A color, six page foldout guide to Tapestry 
5.0 (PDF)</li></ul></div>
       </div>
 
       <div class="clearer"></div>


Reply via email to