You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by bu...@apache.org on 2015/11/08 18:21:56 UTC

svn commit: r971770 [3/5] - in /websites/production/tapestry/content: ./ cache/

Modified: websites/production/tapestry/content/hibernate-support-faq.html
==============================================================================
--- websites/production/tapestry/content/hibernate-support-faq.html (original)
+++ websites/production/tapestry/content/hibernate-support-faq.html Sun Nov  8 17:21:51 2015
@@ -67,7 +67,53 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><h2 id="HibernateSupportFAQ-HibernateSupport">Hibernate Support</h2><p>Main article: <a shape="rect" href="hibernate.html">Hibernate</a></p><h3 id="HibernateSupportFAQ-HowdoIgetHibernatetostartupupwhentheapplicationstartsup,ratherthanlazilywiththefirstrequestfortheapplication?">How do I get Hibernate to startup up when the application starts up, rather than lazily with the first request for the application?</h3><p>This was a minor problem in 5.0; by 5.1 it is just a matter of overriding the configuration system <code>tapestry.hibernate-early-startup</code> to "true".</p></div>
+<div id="ConfluenceContent">    
+<div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a shape="rect" href="specific-errors-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-left">Previous</span>
+                                <span class="title">Specific Errors FAQ</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a shape="rect" href="maven-support-faq.html" rel="next">
+                <span class="title">Maven Support FAQ</span>
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div><h2 id="HibernateSupportFAQ-HibernateSupport">Hibernate Support</h2><p>Main article: <a shape="rect" href="hibernate.html">Hibernate</a></p><h3 id="HibernateSupportFAQ-HowdoIgetHibernatetostartupupwhentheapplicationstartsup,ratherthanlazilywiththefirstrequestfortheapplication?">How do I get Hibernate to startup up when the application starts up, rather than lazily with the first request for the application?</h3><p>This was a minor problem in 5.0; by 5.1 it is just a matter of overriding the configuration system <code>tapestry.hibernate-early-startup</code> to "true".</p>    
+<div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a shape="rect" href="specific-errors-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-left">Previous</span>
+                                <span class="title">Specific Errors FAQ</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a shape="rect" href="maven-support-faq.html" rel="next">
+                <span class="title">Maven Support FAQ</span>
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/hibernate.html
==============================================================================
--- websites/production/tapestry/content/hibernate.html (original)
+++ websites/production/tapestry/content/hibernate.html Sun Nov  8 17:21:51 2015
@@ -118,7 +118,7 @@
                 <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>        </div>
 
         <div class="details">
-                        <a shape="rect" href="hibernate-core.html">Hibernate - Core</a>
+                        <a shape="rect" href="hibernate-core-conf.html">Hibernate - Core - Conf</a>
                 
                         
                     </div>
@@ -127,7 +127,7 @@
                 <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>        </div>
 
         <div class="details">
-                        <a shape="rect" href="hibernate-core-conf.html">Hibernate - Core - Conf</a>
+                        <a shape="rect" href="hibernate-core.html">Hibernate - Core</a>
                 
                         
                     </div>

Modified: websites/production/tapestry/content/indexv2.html
==============================================================================
--- websites/production/tapestry/content/indexv2.html (original)
+++ websites/production/tapestry/content/indexv2.html Sun Nov  8 17:21:51 2015
@@ -73,30 +73,10 @@ a.blogHeading {
 
 <script src="http://platform.twitter.com/widgets.js"></script>
 
-<p>&#160;</p><p></p><p>
-</p><div id="top">
-  <h1>
-    <img id="tapestry" src="http://tapestry.apache.org/images/tapestry.png" alt="Tapestry" width="550" height="230" style="max-height: inherit">
-  </h1>
-
-  <div style="float: right;width: 280px">
-
-    <div style="margin: 1em; text-align: right">
-      <form enctype="application/x-www-form-urlencoded" method="get" action="http://tapestry.apache.org/search.html">
+<p>&#160;</p><p></p><div class="row" id="top"><div class="col-md-8"><h1 id="IndexV2-"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image confluence-external-resource" src="http://tapestry.apache.org/images/tapestry.png" data-image-src="http://tapestry.apache.org/images/tapestry.png"></span>&#160;</h1></div><div class="col-md-4"><div><p>      </p><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 style="font-family:Georgia,serif;font-size:18px;font-style:italic;line-height:1.3em;padding: 1em 1em 0 0;">
-      Component oriented framework for creating dynamic, robust, highly scalable web applications in Java.
-    </div>
-
-  </div>
-
-</div>
-  <div class="clear"></div>
-<p></p> <div id="features">
+      </form></div><pre><br clear="none">A component-oriented web framework for creating dynamic, robust, highly scalable web applications in Java.</pre></div></div><p>&#160;</p><p>&#160;</p> <div id="features">
 <ul class="alternate"><li><h3 id="IndexV2-JavaPower">Java Power</h3>
 <div class="feature radied relief">
 <p>Tapestry pages and components are simple Java POJOs, with easy access to all Java language features and the vast Java ecosystem. Thanks to Java's advanced concurrency API, Tapestry handles requests <em>fast</em> without sacrificing security or stability.</p></div></li><li><h3 id="IndexV2-ScriptingEase">Scripting Ease</h3>

Modified: websites/production/tapestry/content/injection-faq.html
==============================================================================
--- websites/production/tapestry/content/injection-faq.html (original)
+++ websites/production/tapestry/content/injection-faq.html Sun Nov  8 17:21:51 2015
@@ -67,7 +67,30 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><h2 id="InjectionFAQ-Injection">Injection</h2><p>Main article: <a shape="rect" href="injection.html">Injection</a></p><h3 id="InjectionFAQ-What'sthedifferencebetweenthe@Componentand@InjectComponentannotations?">What's the difference between the <code>@Component</code> and <code>@InjectComponent</code> annotations?</h3><p>The <code>@Component</code> annotation is used to define the <em>type</em> of component, and its parameter bindings. When using <code>@Component</code>, the template must not define the type, and any parameter bindings are merged in:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<div id="ConfluenceContent">    
+<div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a shape="rect" href="ajax-components-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-left">Previous</span>
+                                <span class="title">Ajax Components FAQ</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a shape="rect" href="tapestry-inversion-of-control-faq.html" rel="next">
+                <span class="title">Tapestry Inversion of Control FAQ</span>
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div><h2 id="InjectionFAQ-Injection">Injection</h2><p>Main article: <a shape="rect" href="injection.html">Injection</a></p><h3 id="InjectionFAQ-What'sthedifferencebetweenthe@Componentand@InjectComponentannotations?">What's the difference between the <code>@Component</code> and <code>@InjectComponent</code> annotations?</h3><p>The <code>@Component</code> annotation is used to define the <em>type</em> of component, and its parameter bindings. When using <code>@Component</code>, the template must not define the type, and any parameter bindings are merged in:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <pre class="brush: java; gutter: true; theme: Default" style="font-size:12px;">  &lt;a t:id="home" class="nav"&gt;Back to home&lt;/a&gt;
 </pre>
 </div></div><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
@@ -132,7 +155,30 @@
         return shadowBuilder.build(requestGlobals, "request", Request.class);
     }
 </pre>
-</div></div><p><a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/RequestGlobals.html">RequestGlobals</a> is a per-thread service. The Request service is a global singleton created by the <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/PropertyShadowBuilder.html">PropertyShadowBuilder</a> service, but is just a proxy. It has no internal state; invoking a method on the Request service just turns around and extracts the Request object from the per-thread RequestGlobals and invokes the same method there.</p><h3 id="InjectionFAQ-Iuse@Injectonafieldtoinjectaservice,butthefieldisstillnull,whathappened?">I use <code>@Inject</code> on a field to inject a service, but the field is still null, what happened?</h3><p>This can happen when you use the wrong <code>@Inject</code> annotation; for example, com.google.inject.Inject instead of org.apache.tapestry5.i
 oc.annotations.Inject. This can occur when you have TestNG on the classpath, for example, and your IDE is too helpful. Double check your imports when things seem weird.</p><p>Also remember that <code>@Inject</code> on fields works for components and for service implementations or other objects that Tapestry instantiates, but not on arbitrary objects (that are created via Java's new keyword).</p></div>
+</div></div><p><a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/RequestGlobals.html">RequestGlobals</a> is a per-thread service. The Request service is a global singleton created by the <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/PropertyShadowBuilder.html">PropertyShadowBuilder</a> service, but is just a proxy. It has no internal state; invoking a method on the Request service just turns around and extracts the Request object from the per-thread RequestGlobals and invokes the same method there.</p><h3 id="InjectionFAQ-Iuse@Injectonafieldtoinjectaservice,butthefieldisstillnull,whathappened?">I use <code>@Inject</code> on a field to inject a service, but the field is still null, what happened?</h3><p>This can happen when you use the wrong <code>@Inject</code> annotation; for example, com.google.inject.Inject instead of org.apache.tapestry5.i
 oc.annotations.Inject. This can occur when you have TestNG on the classpath, for example, and your IDE is too helpful. Double check your imports when things seem weird.</p><p>Also remember that <code>@Inject</code> on fields works for components and for service implementations or other objects that Tapestry instantiates, but not on arbitrary objects (that are created via Java's new keyword).</p>    
+<div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a shape="rect" href="ajax-components-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-left">Previous</span>
+                                <span class="title">Ajax Components FAQ</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a shape="rect" href="tapestry-inversion-of-control-faq.html" rel="next">
+                <span class="title">Tapestry Inversion of Control FAQ</span>
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div></div>
 </div>
 
 <div class="clearer"></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 Nov  8 17:21:51 2015
@@ -72,11 +72,11 @@
 </div></div>
 <div style="border-right: 20px solid #D8E4F1;border-left: 20px solid #D8E4F1;">
 <p>&#160;</p></div><p>Starting with Tapestry 5.3, Tapestry provides built-in integration with the Java Persistence API (JPA). This module supersedes <a shape="rect" class="external-link" href="http://tynamo.org/tapestry-jpa+guide" >Tynamo's JPA integration</a>.</p><p><strong>Contents</strong></p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1437340849738 {padding: 0px;}
-div.rbtoc1437340849738 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1437340849738 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1447003264149 {padding: 0px;}
+div.rbtoc1447003264149 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1447003264149 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1437340849738">
+/*]]>*/</style></p><div class="toc-macro rbtoc1447003264149">
 <ul class="toc-indentation"><li><a shape="rect" href="#IntegratingwithJPA-ConfiguringJPA">Configuring JPA</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#IntegratingwithJPA-XML-lessJPAconfiguration">XML-less JPA configuration</a></li><li><a shape="rect" href="#IntegratingwithJPA-Automaticallyaddingmanagedclasses">Automatically adding managed classes</a></li></ul>
 </li><li><a shape="rect" href="#IntegratingwithJPA-InjectingtheEntityManager">Injecting the EntityManager</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 Nov  8 17:21:51 2015
@@ -97,11 +97,11 @@
                     </div>
     </li></ul>
 </div><p>For integrating Spring Security into your application, see <a shape="rect" href="security.html">Security</a>.</p><p><strong>Contents</strong></p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1437949176882 {padding: 0px;}
-div.rbtoc1437949176882 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1437949176882 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1447003186194 {padding: 0px;}
+div.rbtoc1447003186194 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1447003186194 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1437949176882">
+/*]]>*/</style></p><div class="toc-macro rbtoc1447003186194">
 <ul class="toc-indentation"><li>Related Articles</li></ul>
 <ul><li><a shape="rect" href="#IntegratingwithSpringFramework-SpringVersion">Spring Version</a></li><li><a shape="rect" href="#IntegratingwithSpringFramework-Usage">Usage</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#IntegratingwithSpringFramework-Requireddependency">Required dependency</a></li><li><a shape="rect" href="#IntegratingwithSpringFramework-Updateyourweb.xmlfile">Update your web.xml file</a></li><li><a shape="rect" href="#IntegratingwithSpringFramework-AccessingtheSpringApplicationContext">Accessing the Spring Application Context</a></li><li><a shape="rect" href="#IntegratingwithSpringFramework-Injectingbeans">Injecting beans</a></li><li><a shape="rect" href="#IntegratingwithSpringFramework-InjectingTapestryservicesinSpringbeans">Injecting Tapestry services in Spring beans</a></li></ul>

Modified: websites/production/tapestry/content/integration-with-existing-applications.html
==============================================================================
--- websites/production/tapestry/content/integration-with-existing-applications.html (original)
+++ websites/production/tapestry/content/integration-with-existing-applications.html Sun Nov  8 17:21:51 2015
@@ -67,7 +67,30 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><h2 id="Integrationwithexistingapplications-Integrationwithexistingapplications">Integration with existing applications</h2><p>You may have an existing JSP (or Struts, Spring MVC, etc.) application that you want to migrate to Tapestry. It's quite common to do this in stages, moving some functionality into Tapestry and leaving other parts, initially, in the other system. <a shape="rect" href="request-processing-faq.html">You may need to prevent Tapestry from handling certain requests</a>.</p><h3 id="Integrationwithexistingapplications-HowdoImakeaformonaJSPsubmitintoTapestry?">How do I make a form on a JSP submit into Tapestry?</h3><p>Tapestry's Form component does a lot of work while an HTML form is rendering to store all the information needed to handle the form submission in a later request; this is all very specific to Tapestry and the particular construction of your pages and forms; it can't be reproduced from a JSP.</p><p>Fortunately, that isn't neces
 sary: you can have a standard HTML Form submit to a Tapestry page, you just don't get to use all of Tapestry's built in conversion and validation logic.</p><p>All you need to know is how Tapestry converts page class names to page names (that appear in the URL). It's basically a matter of stripping off the <em>root-package</em>.<code>pages</code> prefix from the fully qualified class name. So, for example, if you are building a login screen as a JSP, you might want to have a Tapestry page to receive the user name and password. Let's assume the Tapestry page class is <code>com.example.myapp.pages.LoginForm</code>; the page name will be <code>loginform (although, since&#160;</code><span style="line-height: 1.4285715;">Tapestry is case insensitive, LoginForm would work just as well)</span><span style="line-height: 1.4285715;">, and the URL will be </span><code style="line-height: 1.4285715;">/loginform</code><span style="line-height: 1.4285715;">.</span></p><p>&#160;</p><div class="code
  panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<div id="ConfluenceContent">    
+<div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a shape="rect" href="security-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-left">Previous</span>
+                                <span class="title">Security FAQ</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a shape="rect" href="request-processing-faq.html" rel="next">
+                <span class="title">Request Processing FAQ</span>
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div><h2 id="Integrationwithexistingapplications-Integrationwithexistingapplications">Integration with existing applications</h2><p>You may have an existing JSP (or Struts, Spring MVC, etc.) application that you want to migrate to Tapestry. It's quite common to do this in stages, moving some functionality into Tapestry and leaving other parts, initially, in the other system. <a shape="rect" href="request-processing-faq.html">You may need to prevent Tapestry from handling certain requests</a>.</p><h3 id="Integrationwithexistingapplications-HowdoImakeaformonaJSPsubmitintoTapestry?">How do I make a form on a JSP submit into Tapestry?</h3><p>Tapestry's Form component does a lot of work while an HTML form is rendering to store all the information needed to handle the form submission in a later request; this is all very specific to Tapestry and the particular construction of your pages and forms; it can't be reproduced from a JSP.</p><p>Fortunately, that isn't necessary: you can have a s
 tandard HTML Form submit to a Tapestry page, you just don't get to use all of Tapestry's built in conversion and validation logic.</p><p>All you need to know is how Tapestry converts page class names to page names (that appear in the URL). It's basically a matter of stripping off the <em>root-package</em>.<code>pages</code> prefix from the fully qualified class name. So, for example, if you are building a login screen as a JSP, you might want to have a Tapestry page to receive the user name and password. Let's assume the Tapestry page class is <code>com.example.myapp.pages.LoginForm</code>; the page name will be <code>loginform (although, since&#160;</code><span style="line-height: 1.4285715;">Tapestry is case insensitive, LoginForm would work just as well)</span><span style="line-height: 1.4285715;">, and the URL will be </span><code style="line-height: 1.4285715;">/loginform</code><span style="line-height: 1.4285715;">.</span></p><p>&#160;</p><div class="code panel pdl" style="bor
 der-width: 1px;"><div class="codeContent panelContent pdl">
 <pre class="brush: java; gutter: true; theme: Default" style="font-size:12px;">&lt;form method="post" action="/loginform"&gt;
 
   &lt;input type="text" value="userName"/&gt;
@@ -94,7 +117,30 @@
   private SearchResults searchResults;
 }
 </pre>
-</div></div><p>Reading the instance variable <code>searchResults</code> is instrumented to instead read the corresponding HttpSession attribute named "searchResults". You can also specify the <code>value</code> attribute of the SessionAttribute annotation to override the default attribute name.</p><p>Writing to the field causes the corresponding HttpSession attribute to be modified.</p><p>The session is automatically created as needed.</p><h3 id="Integrationwithexistingapplications-HowdoIputtheTapestryapplicationinsideafolder,toavoidconflicts?">How do I put the Tapestry application inside a folder, to avoid conflicts?</h3><p>Support for this was added in 5.3; see the notes on the <a shape="rect" href="configuration.html">configuration page</a>.</p><p>&#160;</p><p>&#160;</p><p>&#160;</p></div>
+</div></div><p>Reading the instance variable <code>searchResults</code> is instrumented to instead read the corresponding HttpSession attribute named "searchResults". You can also specify the <code>value</code> attribute of the SessionAttribute annotation to override the default attribute name.</p><p>Writing to the field causes the corresponding HttpSession attribute to be modified.</p><p>The session is automatically created as needed.</p><h3 id="Integrationwithexistingapplications-HowdoIputtheTapestryapplicationinsideafolder,toavoidconflicts?">How do I put the Tapestry application inside a folder, to avoid conflicts?</h3><p>Support for this was added in 5.3; see the notes on the <a shape="rect" href="configuration.html">configuration page</a>.</p>    
+<div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a shape="rect" href="security-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-left">Previous</span>
+                                <span class="title">Security FAQ</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a shape="rect" href="request-processing-faq.html" rel="next">
+                <span class="title">Request Processing FAQ</span>
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div><p>&#160;</p><p>&#160;</p><p>&#160;</p></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/ioc-cookbook-basic-services-and-injection.html
==============================================================================
--- websites/production/tapestry/content/ioc-cookbook-basic-services-and-injection.html (original)
+++ websites/production/tapestry/content/ioc-cookbook-basic-services-and-injection.html Sun Nov  8 17:21:51 2015
@@ -67,7 +67,26 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent">
+<div id="ConfluenceContent">    
+<div class="atb-scrollbar-macro">
+    <div class="prev">
+        
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="ioc-cookbook.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">IoC cookbook</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a shape="rect" href="ioc-cookbook-overriding-ioc-services.html" rel="next">
+                <span class="title">IoC Cookbook - Overriding IoC Services</span>
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div>
 
 <p>The starting point for Tapestry IOC services and injection is knowing a few conventions: what to name your classes, what packages to put them in and so forth.</p>
 
@@ -180,7 +199,27 @@ public class ExceptionAnalyzerImpl imple
 </div></div>
 
 <p>This is far from the final word on injection and disambiguation; we'll be coming back to this concept repeatedly. And in later chapters of the cookbook, we'll also go into more detail about the many other concepts present in this example. The important part is that Tapestry <em>primarily</em> works off the parameter type (at the point of injection), but when that is insufficient (you'll know ... there will be an error) you can provide additional information, in the form of annotations, to straighten things out.</p>
-</div>
+
+    
+<div class="atb-scrollbar-macro">
+    <div class="prev">
+        
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="ioc-cookbook.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">IoC cookbook</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a shape="rect" href="ioc-cookbook-overriding-ioc-services.html" rel="next">
+                <span class="title">IoC Cookbook - Overriding IoC Services</span>
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/ioc-cookbook-overriding-ioc-services.html
==============================================================================
--- websites/production/tapestry/content/ioc-cookbook-overriding-ioc-services.html (original)
+++ websites/production/tapestry/content/ioc-cookbook-overriding-ioc-services.html Sun Nov  8 17:21:51 2015
@@ -67,7 +67,30 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><h1 id="IoCCookbook-OverridingIoCServices-OverridingTapestryIoCServices">Overriding Tapestry IoC Services</h1><p>Tapestry is designed to be easy to customize, and the IoC container is the key to that customizability.</p><p>One of Tapestry's most important activities is resolving injected objects; that is, when Tapestry is building an object or service and sees a constructor parameter or a field, it must decide what value to plug in. Most of the time, the injected object is a service defined elsewhere within the Tapestry IoC container.</p><p>However, there are cases where you might want to override how Tapestry operates in some specific way.</p><p>The strategy used to determine what object gets injected is <a shape="rect" href="injection-in-detail.html">defined inside Tapestry IoC itself</a>; thus we can take advantage of several features of the Tapestry IoC container in order to take control over specific injections.</p><h2 id="IoCCookbook-OverridingIoCSe
 rvices-ContributingaServiceOverride">Contributing a Service Override</h2><p>In most cases, services are injected by matching just the type; there is no @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/InjectService.html">InjectService</a> annotation, just a method or constructor parameter whose type matches the service's interface.</p><p>In this case, it is very easy to supply your own alternate implementation of a service, by <em>contributing</em><em> a Service Override</em> in your module class (usually AppModule.java), like this:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>AppModule.java (partial)</b></div><div class="codeContent panelContent pdl">
+<div id="ConfluenceContent">    
+<div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a shape="rect" href="ioc-cookbook-basic-services-and-injection.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-left">Previous</span>
+                                <span class="title">IoC Cookbook - Basic Services and Injection</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="ioc-cookbook.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">IoC cookbook</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a shape="rect" href="ioc-cookbook-patterns.html" rel="next">
+                <span class="title">IoC Cookbook - Patterns</span>
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div><h1 id="IoCCookbook-OverridingIoCServices-OverridingTapestryIoCServices">Overriding Tapestry IoC Services</h1><p>Tapestry is designed to be easy to customize, and the IoC container is the key to that customizability.</p><p>One of Tapestry's most important activities is resolving injected objects; that is, when Tapestry is building an object or service and sees a constructor parameter or a field, it must decide what value to plug in. Most of the time, the injected object is a service defined elsewhere within the Tapestry IoC container.</p><p>However, there are cases where you might want to override how Tapestry operates in some specific way.</p><p>The strategy used to determine what object gets injected is <a shape="rect" href="injection-in-detail.html">defined inside Tapestry IoC itself</a>; thus we can take advantage of several features of the Tapestry IoC container in order to take control over specific injections.</p><h2 id="IoCCookbook-OverridingIoCServices-ContributingaSe
 rviceOverride">Contributing a Service Override</h2><p>In most cases, services are injected by matching just the type; there is no @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/InjectService.html">InjectService</a> annotation, just a method or constructor parameter whose type matches the service's interface.</p><p>In this case, it is very easy to supply your own alternate implementation of a service, by <em>contributing</em><em> a Service Override</em> in your module class (usually AppModule.java), like this:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>AppModule.java (partial)</b></div><div class="codeContent panelContent pdl">
 <pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">  @Contribute(ServiceOverride.class)
   public static void setupApplicationServiceOverrides(MappedConfiguration&lt;Class,Object&gt; configuration)
   {
@@ -92,7 +115,30 @@
     return new SomeServiceType() { . . . };
   }
 </pre>
-</div></div><p>This decorate method is invoked because its name matches the service id of the original service, "SomeServiceType" (you have to adjust the name to match the service id).</p><p>The method is passed the original service and its job it to return an <em>interceptor</em>, an object that implements the same interface, wrapping around the original service. In many cases, your code will simply re-invoke methods on the delegate, passing the same parameters. However, an interceptor can decide to not invoke methods, or it can change parameters, or change return values, or catch or throw exceptions.</p><p>Note that the object passed in as <code>delegate</code> may be the core service implementation, or it may be some other interceptor from some other decorator for the same service.</p><hr><p>&#160;</p><p>&#160;</p></div>
+</div></div><p>This decorate method is invoked because its name matches the service id of the original service, "SomeServiceType" (you have to adjust the name to match the service id).</p><p>The method is passed the original service and its job it to return an <em>interceptor</em>, an object that implements the same interface, wrapping around the original service. In many cases, your code will simply re-invoke methods on the delegate, passing the same parameters. However, an interceptor can decide to not invoke methods, or it can change parameters, or change return values, or catch or throw exceptions.</p><p>Note that the object passed in as <code>delegate</code> may be the core service implementation, or it may be some other interceptor from some other decorator for the same service.</p><hr><p>&#160;</p><p>&#160;</p>    
+<div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a shape="rect" href="ioc-cookbook-basic-services-and-injection.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-left">Previous</span>
+                                <span class="title">IoC Cookbook - Basic Services and Injection</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="ioc-cookbook.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">IoC cookbook</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a shape="rect" href="ioc-cookbook-patterns.html" rel="next">
+                <span class="title">IoC Cookbook - Patterns</span>
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/ioc-cookbook-patterns.html
==============================================================================
--- websites/production/tapestry/content/ioc-cookbook-patterns.html (original)
+++ websites/production/tapestry/content/ioc-cookbook-patterns.html Sun Nov  8 17:21:51 2015
@@ -67,7 +67,30 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><p>Tapestry IoC has support for implementing several of the <a shape="rect" class="external-link" href="http://en.wikipedia.org/wiki/Design_pattern_(computer_science)" >Gang Of Four Design Patterns</a>. In fact, the IoC container itself is a pumped up version of the Factory pattern.</p><div class="aui-label" style="float:right" title="Related Articles">
+<div id="ConfluenceContent"><p>    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a shape="rect" href="ioc-cookbook-overriding-ioc-services.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-left">Previous</span>
+                                <span class="title">IoC Cookbook - Overriding IoC Services</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="ioc-cookbook.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">IoC cookbook</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a shape="rect" href="ioc-cookbook-service-configurations.html" rel="next">
+                <span class="title">IoC cookbook - Service Configurations</span>
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div>Tapestry IoC has support for implementing several of the <a shape="rect" class="external-link" href="http://en.wikipedia.org/wiki/Design_pattern_(computer_science)" >Gang Of Four Design Patterns</a>. In fact, the IoC container itself is a pumped up version of the Factory pattern.<div class="aui-label" style="float:right" title="Related Articles">
 
 
 
@@ -190,7 +213,30 @@
     }
   }
 }</pre>
-</div></div><p>Reducing the chain to a single object vastly simplifies the code: we've <em>factored out</em> the loop implicit in the chain of command. That eliminates a lot of code, and that's less code to test, and fewer paths through InjectWorker, which lowers its complexity further. We don't have to test the cases where the list of injection providers is empty, or consists of only a single object, or where it's the third object in that returns true: it looks like a single object, it acts like a single object ... but its implementation uses many objects.</p></div>
+</div></div><p>Reducing the chain to a single object vastly simplifies the code: we've <em>factored out</em> the loop implicit in the chain of command. That eliminates a lot of code, and that's less code to test, and fewer paths through InjectWorker, which lowers its complexity further. We don't have to test the cases where the list of injection providers is empty, or consists of only a single object, or where it's the third object in that returns true: it looks like a single object, it acts like a single object ... but its implementation uses many objects.    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a shape="rect" href="ioc-cookbook-overriding-ioc-services.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-left">Previous</span>
+                                <span class="title">IoC Cookbook - Overriding IoC Services</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="ioc-cookbook.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">IoC cookbook</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a shape="rect" href="ioc-cookbook-service-configurations.html" rel="next">
+                <span class="title">IoC cookbook - Service Configurations</span>
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/ioc-cookbook-service-configurations.html
==============================================================================
--- websites/production/tapestry/content/ioc-cookbook-service-configurations.html (original)
+++ websites/production/tapestry/content/ioc-cookbook-service-configurations.html Sun Nov  8 17:21:51 2015
@@ -67,7 +67,26 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent">
+<div id="ConfluenceContent">    
+<div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a shape="rect" href="ioc-cookbook-patterns.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-left">Previous</span>
+                                <span class="title">IoC Cookbook - Patterns</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="ioc-cookbook.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">IoC cookbook</span>
+                </a>
+
+            </div>
+    <div class="next">
+        
+    </div>
+</div>
 
 <h1 id="IoCcookbook-ServiceConfigurations-ServiceConfigurations">Service Configurations</h1>
 
@@ -227,7 +246,27 @@ public void contributeMasterDispatcher(O
 <p>These contribution set up a number of defaults used to configure various Tapestry services. As you can see, you can even define symbol values in terms of other symbol values.</p>
 
 <p>Mapped configurations don't have to be keyed on Strings (enums or Class are other common key types). When a mapped configuration <em>is</em> keyed on String, then a case-insensitive map is used.</p>
-</div>
+
+    
+<div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a shape="rect" href="ioc-cookbook-patterns.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-left">Previous</span>
+                                <span class="title">IoC Cookbook - Patterns</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="ioc-cookbook.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">IoC cookbook</span>
+                </a>
+
+            </div>
+    <div class="next">
+        
+    </div>
+</div></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/ioc-cookbook.html
==============================================================================
--- websites/production/tapestry/content/ioc-cookbook.html (original)
+++ websites/production/tapestry/content/ioc-cookbook.html Sun Nov  8 17:21:51 2015
@@ -67,7 +67,30 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><p>Tapestry <strong>Inversion of Control</strong> (IoC), though originally designed specifically for the needs of the Tapestry web framework, may also be employed as a stand-alone IoC container, separate from the rest of Tapestry.</p><div class="aui-label" style="float:right" title="Related Articles">
+<div id="ConfluenceContent"><p>    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a shape="rect" href="using-select-with-a-list.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-left">Previous</span>
+                                <span class="title">Using Select With a List</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="cookbook.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Cookbook</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a shape="rect" href="performance-and-clustering.html" rel="next">
+                <span class="title">Performance and Clustering</span>
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div><p>Tapestry <strong>Inversion of Control</strong> (IoC), though originally designed specifically for the needs of the Tapestry web framework, may also be employed as a stand-alone IoC container, separate from the rest of Tapestry.</p><div class="aui-label" style="float:right" title="Related Articles">
 
 
 

Modified: websites/production/tapestry/content/javascript-faq.html
==============================================================================
--- websites/production/tapestry/content/javascript-faq.html (original)
+++ websites/production/tapestry/content/javascript-faq.html Sun Nov  8 17:21:51 2015
@@ -67,7 +67,30 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><h2 id="JavaScriptFAQ-JavaScript">JavaScript</h2><p>Main article: <a shape="rect" href="legacy-javascript.html">Legacy JavaScript</a></p><h3 id="JavaScriptFAQ-WhydoIgeta&quot;Tapestryisundefined&quot;erroronformsubmit?(5.3andearlier)">Why do I get a "Tapestry is undefined" error on form submit? (5.3 and earlier)</h3><p>This client-side error is clear but can be awkward to solve. It means your browser has not been able to load the tapestry.js file properly. The question is, why? It can be due to multiple reasons, some of them below:</p><ul><li>First, check if 'tapestry.js' is present in the head part of your resulting HTML page.</li><li><p>If you have set the <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/SymbolConstants.html#COMBINE_SCRIPTS">tapestry.combine-scripts</a> configuration symbol to true, Tapestry generates one single URL to retrieve all the JS files. Sometimes, this can produce long 
 URLs that browsers are unable to retrieve. Try setting the symbol to false.</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>This only applies to Tapestry 5.1.</p></div></div></li><li>If you have included jQuery in conjunction with Tapestry's prototype, that will cause a conflict with the '$' selector used by both. In this case, you should put jQuery on top of the stack and turn on the <a shape="rect" class="external-link" href="http://api.jquery.com/jQuery.noConflict/" >jQuery.noConflict</a> mode.</li><li>Also, if you have included a custom or third-party JS library on top of the stack that causes the JavaScript parsing to fail, then check the JavaScript syntax in that library.</li><li>If you have used a tool to minimize your JavaScript libraries, this can lead to JavaScript syntax errors, so check if it 
 works with all the JavaScript files unpacked.</li></ul><h3 id="JavaScriptFAQ-What'sthedifferencebetweentheT5objectandtheTapestryobjectinthebrowser?(5.3andearlier)">What's the difference between the <code>T5</code> object and the <code>Tapestry</code> object in the browser? (5.3 and earlier)</h3><p>Both of these objects are <em>namespaces</em>: containers of functions, constants, and nested namespaces.</p><p>The <code>T5</code> object is a replacement for the <code>Tapestry</code> object, starting in release 5.3. Increasingly, functions defined by the <code>Tapestry</code> object are being replaced with similar or equivalent functions in the <code>T5</code> object.</p><p>This is part of an overall goal, spanning at least two releases of Tapestry, to make Tapestry JavaScript framework agnostic; which is to say, not depend specifically on Prototype or jQuery. Much of the code in the <code>Tapestry</code> object is specifically linked to Prototype and Scriptaculous.</p><p>The <code>T5</
 code> object represents a stable, documented, set of APIs that are preferred when building components for maximum portability between underlying JavaScript frameworks. In other words, when building component libraries, coding to the <code>T5</code> object ensures that your component will be useful regardless of whether the final application is built using Prototype, jQuery or something else.</p></div>
+<div id="ConfluenceContent">    
+<div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a shape="rect" href="component-events-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-left">Previous</span>
+                                <span class="title">Component Events FAQ</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a shape="rect" href="ajax-components-faq.html" rel="next">
+                <span class="title">Ajax Components FAQ</span>
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div><h2 id="JavaScriptFAQ-JavaScript">JavaScript</h2><p>Main article: <a shape="rect" href="legacy-javascript.html">Legacy JavaScript</a></p><h3 id="JavaScriptFAQ-WhydoIgeta&quot;Tapestryisundefined&quot;erroronformsubmit?(5.3andearlier)">Why do I get a "Tapestry is undefined" error on form submit? (5.3 and earlier)</h3><p>This client-side error is clear but can be awkward to solve. It means your browser has not been able to load the tapestry.js file properly. The question is, why? It can be due to multiple reasons, some of them below:</p><ul><li>First, check if 'tapestry.js' is present in the head part of your resulting HTML page.</li><li><p>If you have set the <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/SymbolConstants.html#COMBINE_SCRIPTS">tapestry.combine-scripts</a> configuration symbol to true, Tapestry generates one single URL to retrieve all the JS files. Sometimes, this can produce long URLs that browsers are
  unable to retrieve. Try setting the symbol to false.</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>This only applies to Tapestry 5.1.</p></div></div></li><li>If you have included jQuery in conjunction with Tapestry's prototype, that will cause a conflict with the '$' selector used by both. In this case, you should put jQuery on top of the stack and turn on the <a shape="rect" class="external-link" href="http://api.jquery.com/jQuery.noConflict/" >jQuery.noConflict</a> mode.</li><li>Also, if you have included a custom or third-party JS library on top of the stack that causes the JavaScript parsing to fail, then check the JavaScript syntax in that library.</li><li>If you have used a tool to minimize your JavaScript libraries, this can lead to JavaScript syntax errors, so check if it works with all the Jav
 aScript files unpacked.</li></ul><h3 id="JavaScriptFAQ-What'sthedifferencebetweentheT5objectandtheTapestryobjectinthebrowser?(5.3andearlier)">What's the difference between the <code>T5</code> object and the <code>Tapestry</code> object in the browser? (5.3 and earlier)</h3><p>Both of these objects are <em>namespaces</em>: containers of functions, constants, and nested namespaces.</p><p>The <code>T5</code> object is a replacement for the <code>Tapestry</code> object, starting in release 5.3. Increasingly, functions defined by the <code>Tapestry</code> object are being replaced with similar or equivalent functions in the <code>T5</code> object.</p><p>This is part of an overall goal, spanning at least two releases of Tapestry, to make Tapestry JavaScript framework agnostic; which is to say, not depend specifically on Prototype or jQuery. Much of the code in the <code>Tapestry</code> object is specifically linked to Prototype and Scriptaculous.</p><p>The <code>T5</code> object represent
 s a stable, documented, set of APIs that are preferred when building components for maximum portability between underlying JavaScript frameworks. In other words, when building component libraries, coding to the <code>T5</code> object ensures that your component will be useful regardless of whether the final application is built using Prototype, jQuery or something else.</p></div>
 </div>
 
 <div class="clearer"></div>

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 Nov  8 17:21:51 2015
@@ -58,11 +58,11 @@
 
 <div id="content">
 <div id="ConfluenceContent"><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1437340811180 {padding: 0px;}
-div.rbtoc1437340811180 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1437340811180 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1447003218105 {padding: 0px;}
+div.rbtoc1447003218105 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1447003218105 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1437340811180">
+/*]]>*/</style></p><div class="toc-macro rbtoc1447003218105">
 <ul class="toc-indentation"><li><a shape="rect" href="#JavaScriptRewritein5.4-TapestryandJavaScript">Tapestry and JavaScript</a></li><li><a shape="rect" href="#JavaScriptRewritein5.4-TapestryJavaScriptLimitations(through5.3)">Tapestry JavaScript Limitations (through 5.3)</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#JavaScriptRewritein5.4-DependenceonPrototype/Scriptaculous">Dependence on Prototype/Scriptaculous</a></li><li><a shape="rect" href="#JavaScriptRewritein5.4-LackofDocumentation">Lack of Documentation</a></li><li><a shape="rect" href="#JavaScriptRewritein5.4-LackofModuleStructure">Lack of Module Structure</a></li><li><a shape="rect" href="#JavaScriptRewritein5.4-ComplexInitialization">Complex Initialization</a></li></ul>
 </li><li><a shape="rect" href="#JavaScriptRewritein5.4-JavaScriptImprovementsfor5.4">JavaScript Improvements for 5.4</a>

Modified: websites/production/tapestry/content/limitations.html
==============================================================================
--- websites/production/tapestry/content/limitations.html (original)
+++ websites/production/tapestry/content/limitations.html Sun Nov  8 17:21:51 2015
@@ -67,7 +67,30 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><h2 id="Limitations-Limitations">Limitations</h2><h3 id="Limitations-HowdoIaddnewcomponentstoanexistingpagedynamically?">How do I add new components to an existing page dynamically?</h3><p>The short answer here is: <strong>you don't</strong>. The long answer here is <strong>you don't have to, to get the behavior you desire</strong>.</p><p>One of Tapestry basic values is high scalability: this is expressed in a number of ways, reflecting scalability concerns within a single server, and within a cluster of servers.</p><p>Although you code Tapestry pages and components as if they were ordinary POJOs (<span style="line-height: 1.4285715;">Plain Old Java Objects -- Tapestry does not require you to extend any base classes or implement any special interfaces)</span><span style="line-height: 1.4285715;">, as deployed by Tapestry they are closer to a traditional servlet: a single instance of each page services requests from multiple threads. Behind the scenes, Tap
 estry transforms you code, rewriting it on the fly.</span></p><p>What this means is that <em>any</em> incoming request must be handled by a <em>single page instance</em>. Therefore, Tapestry enforces the concept of <strong>static structure, dynamic behavior</strong>.</p><p>Tapestry provides quite a number of ways to vary what content is rendered, well beyond simple conditionals and loops. It is possible to "drag in" components from other pages when rendering a page (other FAQs will expand on this concept). The point is, that although a Tapestry page's structure is very rigid, the order in which the components of the page render does not have to be top to bottom.</p><h3 id="Limitations-Whydoesn'tmyserviceimplementationreloadwhenIchangeit?">Why doesn't my service implementation reload when I change it?</h3><p>Main article: <a shape="rect" href="service-implementation-reloading.html">Service Implementation Reloading</a></p><p>Live service reloading has some limitations:</p><ul><li>The 
 service must define a service interface.</li><li>The service implementation must be on the file system (not inside a JAR).</li><li>The implementation must be instantiated by Tapestry, not inside code (even code inside a module class).</li><li>The service must use the default <a shape="rect" href="defining-tapestry-ioc-services.html">scope</a> (reloading of perthread scopes is not supported).</li></ul><p>Consider the following example module:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<div id="ConfluenceContent">    
+<div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a shape="rect" href="request-processing-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-left">Previous</span>
+                                <span class="title">Request Processing FAQ</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a shape="rect" href="specific-errors-faq.html" rel="next">
+                <span class="title">Specific Errors FAQ</span>
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div><h2 id="Limitations-Limitations">Limitations</h2><h3 id="Limitations-HowdoIaddnewcomponentstoanexistingpagedynamically?">How do I add new components to an existing page dynamically?</h3><p>The short answer here is: <strong>you don't</strong>. The long answer here is <strong>you don't have to, to get the behavior you desire</strong>.</p><p>One of Tapestry basic values is high scalability: this is expressed in a number of ways, reflecting scalability concerns within a single server, and within a cluster of servers.</p><p>Although you code Tapestry pages and components as if they were ordinary POJOs (<span style="line-height: 1.4285715;">Plain Old Java Objects -- Tapestry does not require you to extend any base classes or implement any special interfaces)</span><span style="line-height: 1.4285715;">, as deployed by Tapestry they are closer to a traditional servlet: a single instance of each page services requests from multiple threads. Behind the scenes, Tapestry transforms you c
 ode, rewriting it on the fly.</span></p><p>What this means is that <em>any</em> incoming request must be handled by a <em>single page instance</em>. Therefore, Tapestry enforces the concept of <strong>static structure, dynamic behavior</strong>.</p><p>Tapestry provides quite a number of ways to vary what content is rendered, well beyond simple conditionals and loops. It is possible to "drag in" components from other pages when rendering a page (other FAQs will expand on this concept). The point is, that although a Tapestry page's structure is very rigid, the order in which the components of the page render does not have to be top to bottom.</p><h3 id="Limitations-Whydoesn'tmyserviceimplementationreloadwhenIchangeit?">Why doesn't my service implementation reload when I change it?</h3><p>Main article: <a shape="rect" href="service-implementation-reloading.html">Service Implementation Reloading</a></p><p>Live service reloading has some limitations:</p><ul><li>The service must define a 
 service interface.</li><li>The service implementation must be on the file system (not inside a JAR).</li><li>The implementation must be instantiated by Tapestry, not inside code (even code inside a module class).</li><li>The service must use the default <a shape="rect" href="defining-tapestry-ioc-services.html">scope</a> (reloading of perthread scopes is not supported).</li></ul><p>Consider the following example module:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <pre class="brush: java; gutter: true; theme: Default" style="font-size:12px;">public static void bind(ServiceBinder binder)
 {
   binder.bind(ArchiveService.class, ArchiveServiceImpl.class);
@@ -82,7 +105,30 @@ public static JobQueue buildJobQueue(Mes
   return service;
 }
 </pre>
-</div></div><p>ArchiveService is reloadable, because Tapestry instantiates <code>ArchiveServiceImpl</code> itself. On the other hand, Tapestry invokes <code>buildJobQueue()</code> and it is your code inside the method that instantiates <code>JobQueueImpl</code>, so the JobQueue service will not be reloadable.</p><p>Finally, only classes whose class files are stored directly on the file system, and not packaged inside JARs, are ever reloadable ... generally, only the services of the application being built (and not services from libraries) will be stored on the file system. This reflects the intent of reloading: as an agile development tool, but not something to be used in deployment.</p><h3 id="Limitations-HowdoIrunmultipleTapestryapplicationsinthesamewebapplication?">How do I run multiple Tapestry applications in the same web application?</h3><p>Running multiple Tapestry 5 applications is not supported; there's only one place to identify the application root package, so even config
 uring multiple filters into multiple folders will not work.</p><p>Support for multiple Tapestry applications in the same web application was a specific non-goal in Tapestry 5 (it needlessly complicated Tapestry 4). Given how loosely connected Tapestry 5 pages are from each other, there doesn't seem to be an advantage to doing so ... and certainly, in terms of memory utilization, there is a significant down side, were it even possible.</p><p>You&#160;<em>can</em>&#160;<span style="color: rgb(0,0,0);">run a Tapestry 4 app and a Tapestry 5 app side-by-side (the package names are different, for just this reason), but they know nothing of each other, and can't interact directly. This is just like the way you could have a single WAR with multiple servlets; the different applications can only communicate via URLs, or shared state in the HttpSession.</span></p><p>&#160;</p><p>&#160;</p><p>&#160;</p></div>
+</div></div><p>ArchiveService is reloadable, because Tapestry instantiates <code>ArchiveServiceImpl</code> itself. On the other hand, Tapestry invokes <code>buildJobQueue()</code> and it is your code inside the method that instantiates <code>JobQueueImpl</code>, so the JobQueue service will not be reloadable.</p><p>Finally, only classes whose class files are stored directly on the file system, and not packaged inside JARs, are ever reloadable ... generally, only the services of the application being built (and not services from libraries) will be stored on the file system. This reflects the intent of reloading: as an agile development tool, but not something to be used in deployment.</p><h3 id="Limitations-HowdoIrunmultipleTapestryapplicationsinthesamewebapplication?">How do I run multiple Tapestry applications in the same web application?</h3><p>Running multiple Tapestry 5 applications is not supported; there's only one place to identify the application root package, so even config
 uring multiple filters into multiple folders will not work.</p><p>Support for multiple Tapestry applications in the same web application was a specific non-goal in Tapestry 5 (it needlessly complicated Tapestry 4). Given how loosely connected Tapestry 5 pages are from each other, there doesn't seem to be an advantage to doing so ... and certainly, in terms of memory utilization, there is a significant down side, were it even possible.</p><p>You&#160;<em>can</em>&#160;<span style="color: rgb(0,0,0);">run a Tapestry 4 app and a Tapestry 5 app side-by-side (the package names are different, for just this reason), but they know nothing of each other, and can't interact directly. This is just like the way you could have a single WAR with multiple servlets; the different applications can only communicate via URLs, or shared state in the HttpSession.</span></p>    
+<div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a shape="rect" href="request-processing-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-left">Previous</span>
+                                <span class="title">Request Processing FAQ</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a shape="rect" href="specific-errors-faq.html" rel="next">
+                <span class="title">Specific Errors FAQ</span>
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div><p>&#160;</p><p>&#160;</p><p>&#160;</p></div>
 </div>
 
 <div class="clearer"></div>

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 Nov  8 17:21:51 2015
@@ -67,7 +67,30 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><h2 id="LinkComponentsFAQ-LinkComponents">Link Components</h2><h3 id="LinkComponentsFAQ-HowdoIaddqueryparameterstoaPageLinkorActionLink?">How do I add query parameters to a PageLink or ActionLink?</h3><p>These components do not have parameters to allow you to specify query parameters for the link; they both allow you to specify a <em>context</em> (one or more values to encode into the request path).</p><p>However, you can accomplish the same thing with a little code and markup. For example, to create a link to another page and pass a query parameter, you can replace your PageLink component with a standard <code>&lt;a&gt;</code> tag:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<div id="ConfluenceContent">    
+<div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a shape="rect" href="beaneditform-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-left">Previous</span>
+                                <span class="title">BeanEditForm FAQ</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a shape="rect" href="component-events-faq.html" rel="next">
+                <span class="title">Component Events FAQ</span>
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div><h2 id="LinkComponentsFAQ-LinkComponents">Link Components</h2><h3 id="LinkComponentsFAQ-HowdoIaddqueryparameterstoaPageLinkorActionLink?">How do I add query parameters to a PageLink or ActionLink?</h3><p>These components do not have parameters to allow you to specify query parameters for the link; they both allow you to specify a <em>context</em> (one or more values to encode into the request path).</p><p>However, you can accomplish the same thing with a little code and markup. For example, to create a link to another page and pass a query parameter, you can replace your PageLink component with a standard <code>&lt;a&gt;</code> tag:</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;a href="${profilePageLink}"&gt;Display Profile (w/ full details)&lt;/a&gt;
 </pre>
 </div></div><p>In the matching Java class, you can create the Link programmatically:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
@@ -100,7 +123,30 @@
 </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;">&lt;t:pagelink page="prop:componentResources.pageName"&gt;refresh page&lt;/t:pagelink&gt;
 </pre>
-</div></div><p>Every component has an extra property, componentResources, added to it: it's the instance of <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ComponentResources.html">ComponentResources</a> that represents the link between your code and all of Tapestry's structure around your class. One of the properties of ComponentResources is pageName, the name of the page. By binding the PageLink's page parameter with the "prop:" binding prefix, we ensure that we bind to a computed property; this is necessary because the PageLink.page parameter defaults to the "literal:" binding prefix.</p><p>As an added benefit, if the page class is ever renamed or moved to a different package, the pageName property will automatically adjust to the new name.</p></div>
+</div></div><p>Every component has an extra property, componentResources, added to it: it's the instance of <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ComponentResources.html">ComponentResources</a> that represents the link between your code and all of Tapestry's structure around your class. One of the properties of ComponentResources is pageName, the name of the page. By binding the PageLink's page parameter with the "prop:" binding prefix, we ensure that we bind to a computed property; this is necessary because the PageLink.page parameter defaults to the "literal:" binding prefix.</p><p>As an added benefit, if the page class is ever renamed or moved to a different package, the pageName property will automatically adjust to the new name.</p>    
+<div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a shape="rect" href="beaneditform-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-left">Previous</span>
+                                <span class="title">BeanEditForm FAQ</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a shape="rect" href="component-events-faq.html" rel="next">
+                <span class="title">Component Events FAQ</span>
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/localization.html
==============================================================================
--- websites/production/tapestry/content/localization.html (original)
+++ websites/production/tapestry/content/localization.html Sun Nov  8 17:21:51 2015
@@ -101,7 +101,7 @@
                 <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>        </div>
 
         <div class="details">
-                        <a shape="rect" href="localization.html">Localization</a>
+                        <a shape="rect" href="component-parameters.html">Component Parameters</a>
                 
                         
                     </div>
@@ -110,7 +110,7 @@
                 <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>        </div>
 
         <div class="details">
-                        <a shape="rect" href="component-parameters.html">Component Parameters</a>
+                        <a shape="rect" href="localization.html">Localization</a>
                 
                         
                     </div>

Modified: websites/production/tapestry/content/maven-support-faq.html
==============================================================================
--- websites/production/tapestry/content/maven-support-faq.html (original)
+++ websites/production/tapestry/content/maven-support-faq.html Sun Nov  8 17:21:51 2015
@@ -67,7 +67,30 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><h2 id="MavenSupportFAQ-MavenSupport">Maven Support</h2><h3 id="MavenSupportFAQ-WhydoMavenprojectnamesandotherdetailsshowupinmypages?">Why do Maven project names and other details show up in my pages?</h3><p>Tapestry and maven both use the same syntax for dynamic portions of files: the <code>${...</code>} syntax. When Maven is copying resources from <code>src/main/resources</code>, and when filtering is <em>enabled</em> (which is not the default), then any expansions in <em>Tapestry templates</em> that match against Maven project properties are substituted. If you look at the deployed application you'll see that <code>${name</code>} is gone, replaced with your project's name!</p><p>The solution is to update your <code>pom.xml</code> and ignore any .tml files when copying and filtering:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>pom.xml (partial)</b></div><div class
 ="codeContent panelContent pdl">
+<div id="ConfluenceContent">    
+<div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a shape="rect" href="hibernate-support-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-left">Previous</span>
+                                <span class="title">Hibernate Support FAQ</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a shape="rect" href="release-upgrade-faq.html" rel="next">
+                <span class="title">Release Upgrade FAQ</span>
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div><h2 id="MavenSupportFAQ-MavenSupport">Maven Support</h2><h3 id="MavenSupportFAQ-WhydoMavenprojectnamesandotherdetailsshowupinmypages?">Why do Maven project names and other details show up in my pages?</h3><p>Tapestry and maven both use the same syntax for dynamic portions of files: the <code>${...</code>} syntax. When Maven is copying resources from <code>src/main/resources</code>, and when filtering is <em>enabled</em> (which is not the default), then any expansions in <em>Tapestry templates</em> that match against Maven project properties are substituted. If you look at the deployed application you'll see that <code>${name</code>} is gone, replaced with your project's name!</p><p>The solution is to update your <code>pom.xml</code> and ignore any .tml files when copying and filtering:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>pom.xml (partial)</b></div><div class="codeContent panelCon
 tent pdl">
 <pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">  &lt;resource&gt;
     &lt;directory&gt;src/main/resources&lt;/directory&gt;
     &lt;excludes&gt;
@@ -84,7 +107,30 @@
     &lt;filtering&gt;false&lt;/filtering&gt;
   &lt;/resource&gt;
 </pre>
-</div></div></div>
+</div></div>    
+<div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a shape="rect" href="hibernate-support-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-left">Previous</span>
+                                <span class="title">Hibernate Support FAQ</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a shape="rect" href="release-upgrade-faq.html" rel="next">
+                <span class="title">Release Upgrade FAQ</span>
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/meta-programming-page-content.html
==============================================================================
--- websites/production/tapestry/content/meta-programming-page-content.html (original)
+++ websites/production/tapestry/content/meta-programming-page-content.html Sun Nov  8 17:21:51 2015
@@ -68,7 +68,30 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><h1 id="Meta-ProgrammingPageContent-Meta-ProgrammingPageContent">Meta-Programming Page Content</h1><p>It is likely that you have some cross-cutting concerns across your pages, specific features you would like to "mix in" to your pages without getting tied into knots by inheritance. This is one of those areas where Tapestry shines.</p><p>This specific example is adapted from a real client requirement: the client was concerned about other sites wrapping his content in a frameset and making the site content appear to be theirs. Not all pages (in some cases, that would be an advantage) but specific pages in the application. For those pages, the following behaviors were required:</p><ul><li>Set the X-Frame-Options response header to "DENY"</li><li>Include JavaScript to "pop" the page out of a frame, if in one</li></ul><p>Again, this <em>could</em> be done by having a specific base-class that included a <code>beginRender()</code> method, but I think you'll see 
 that the meta-programming approach is nearly as easy and much more flexible.</p><h2 id="Meta-ProgrammingPageContent-ComponentMeta-Data">Component Meta-Data</h2><p>In Tapestry, every component (and remember, pages are components) has <em>meta data</em>: an extra set of key/value pairs stored in the component's <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ComponentResources.html">ComponentResources</a>.</p><p>By hooking into the component class transformation pipeline, we can change an annotation into meta-data that can be accessed by a filter.</p><h2 id="Meta-ProgrammingPageContent-DefiningtheAnnotation">Defining the Annotation</h2><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>ForbidFraming.java</b></div><div class="codeContent panelContent pdl">
+<div id="ConfluenceContent">    
+<div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a shape="rect" href="extending-the-if-component.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-left">Previous</span>
+                                <span class="title">Extending the If Component</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="cookbook.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Cookbook</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a shape="rect" href="using-select-with-a-list.html" rel="next">
+                <span class="title">Using Select With a List</span>
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div><h1 id="Meta-ProgrammingPageContent-Meta-ProgrammingPageContent">Meta-Programming Page Content</h1><p>It is likely that you have some cross-cutting concerns across your pages, specific features you would like to "mix in" to your pages without getting tied into knots by inheritance. This is one of those areas where Tapestry shines.</p><p>This specific example is adapted from a real client requirement: the client was concerned about other sites wrapping his content in a frameset and making the site content appear to be theirs. Not all pages (in some cases, that would be an advantage) but specific pages in the application. For those pages, the following behaviors were required:</p><ul><li>Set the X-Frame-Options response header to "DENY"</li><li>Include JavaScript to "pop" the page out of a frame, if in one</li></ul><p>Again, this <em>could</em> be done by having a specific base-class that included a <code>beginRender()</code> method, but I think you'll see that the meta-programm
 ing approach is nearly as easy and much more flexible.</p><h2 id="Meta-ProgrammingPageContent-ComponentMeta-Data">Component Meta-Data</h2><p>In Tapestry, every component (and remember, pages are components) has <em>meta data</em>: an extra set of key/value pairs stored in the component's <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ComponentResources.html">ComponentResources</a>.</p><p>By hooking into the component class transformation pipeline, we can change an annotation into meta-data that can be accessed by a filter.</p><h2 id="Meta-ProgrammingPageContent-DefiningtheAnnotation">Defining the Annotation</h2><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>ForbidFraming.java</b></div><div class="codeContent panelContent pdl">
 <pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">package com.fnord.annotations;
 
 import java.lang.annotation.Documented;

Modified: websites/production/tapestry/content/overriding-exception-reporting.html
==============================================================================
--- websites/production/tapestry/content/overriding-exception-reporting.html (original)
+++ websites/production/tapestry/content/overriding-exception-reporting.html Sun Nov  8 17:21:51 2015
@@ -67,7 +67,30 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><p>One of Tapestry's best features is its comprehensive exception reporting. The level of detail is impressive and useful.</p><div class="aui-label" style="float:right" title="Related Articles">
+<div id="ConfluenceContent"><p>    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a shape="rect" href="default-parameter.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-left">Previous</span>
+                                <span class="title">Default Parameter</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a shape="rect" href="cookbook.html" rel="parent">
+                                            <span class="aui-icon aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Cookbook</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a shape="rect" href="error-page-recipe.html" rel="next">
+                <span class="title">Error Page Recipe</span>
+                                    <span class="aui-icon aui-icon-small atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div><p>One of Tapestry's best features is its comprehensive exception reporting. The level of detail is impressive and useful.</p><div class="aui-label" style="float:right" title="Related Articles">