You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by bu...@apache.org on 2014/01/18 22:21:01 UTC

svn commit: r894660 [1/2] - in /websites/production/tapestry/content: ./ cache/

Author: buildbot
Date: Sat Jan 18 21:21:01 2014
New Revision: 894660

Log:
Production update by buildbot for tapestry

Modified:
    websites/production/tapestry/content/cache/main.pageCache
    websites/production/tapestry/content/configuration.html
    websites/production/tapestry/content/hibernate-support-faq.html
    websites/production/tapestry/content/hibernate.html
    websites/production/tapestry/content/implementing-the-hi-lo-guessing-game.html
    websites/production/tapestry/content/integration-with-existing-applications.html
    websites/production/tapestry/content/limitations.html
    websites/production/tapestry/content/maven-support-faq.html
    websites/production/tapestry/content/release-notes-52.html
    websites/production/tapestry/content/specific-errors-faq.html

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

Modified: websites/production/tapestry/content/configuration.html
==============================================================================
--- websites/production/tapestry/content/configuration.html (original)
+++ websites/production/tapestry/content/configuration.html Sat Jan 18 21:21:01 2014
@@ -128,11 +128,11 @@
                             </div>
         </li></ul>
 </div><h1 id="Configuration-ConfiguringTapestry">Configuring Tapestry</h1><p>This page discusses all the ways in which Tapestry can be configured. Tapestry applications are configured almost entirely using Java, with very little XML at all.</p><p><strong>Contents</strong></p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1390065643901 {padding: 0px;}
-div.rbtoc1390065643901 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1390065643901 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1390080048466 {padding: 0px;}
+div.rbtoc1390080048466 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1390080048466 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1390065643901">
+/*]]>*/</style></p><div class="toc-macro rbtoc1390080048466">
 <ul class="toc-indentation"><li><a shape="rect" href="#Configuration-XMLconfiguration(web.xml)">XML configuration (web.xml)</a></li><li><a shape="rect" href="#Configuration-YourApplication'sModuleClass">Your Application's Module Class</a></li><li><a shape="rect" href="#Configuration-ConfigurationSymbolNames">Configuration Symbol Names</a></li><li><a shape="rect" href="#Configuration-SettingComponentParameterDefaults">Setting Component Parameter Defaults</a></li><li><a shape="rect" href="#Configuration-ConfiguringIgnoredPaths">Configuring Ignored Paths</a></li><li><a shape="rect" href="#Configuration-ConfiguringContentTypeMapping">Configuring Content Type Mapping</a></li><li><a shape="rect" href="#Configuration-SettingExecutionModes">Setting Execution Modes</a></li><li><a shape="rect" href="#Configuration-SegregatingApplicationsIntoFolders">Segregating Applications Into Folders</a></li></ul>
 </div><h2 id="Configuration-XMLconfiguration(web.xml)">XML configuration (web.xml)</h2><p>Tapestry runs on top of the standard Java Servlet API. To the servlet container, such as Tomcat, Tapestry appears as a <em>servlet filter</em>. This gives Tapestry great flexibility in matching URLs without requiring lots of XML configuration.</p><p>Although most configuration is done with Java, a small but necessary amount of configuration occurs inside the servlet deployment descriptor, WEB-INF/web.xml. Most of the configuration is boilerplate, nearly the same for all applications.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>web.xml (partial)</b></div><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[&lt;!DOCTYPE web-app
@@ -493,19 +493,7 @@ div.rbtoc1390065643901 li {margin-left: 
     </div>
 
 <div style="border-right: 20px solid #ffcccc;border-left: 20px solid #ffcccc;">
-<p>Starting in 5.2, this is only used if tapestry.page-pool-enabled is "true". <em>Removed in 5.3</em></p></div><p>The time interval that Tapestry will wait for a page instance to become available before deciding whether to create an entirely new page instance.</p><p>The default is "10 ms" (10 milliseconds; see <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/util/TimeInterval.html">Time Interval Formats</a>).</p><h3 id="Configuration-tapestry.persistence-strategy">tapestry.persistence-strategy</h3><p>Identifies the default <a shape="rect" class="external-link" href="http://tapestry.apache.org/persistent-page-data.html#PersistentPageData-PersistenceStrategies">persistence strategy</a> for all pages that do not provide an override. The default is "session" (PersistenceConstants.SESSION).</p><h3 id="Configuration-tapestry.production-mode">tapestry.production-mode</h3><p>A flag (true or false) indicating whether the applica
 tion is running in production or in development. The default is true, which means that runtime exceptions are not reported with full detail (only the root exception message is displayed, not the entire stack of exceptions, properties and other information shown in development mode).</p><h3 id="Configuration-tapestry.requirejs">tapestry.requirejs</h3>
-
-    <div class="aui-message hint shadowed information-macro">
-                    <p class="title">Added in 5.4</p>
-                            <span class="aui-icon icon-hint">Icon</span>
-                <div class="message-content">
-                            
-
-                    </div>
-    </div>
-
-<div style="border-right: 20px solid #D8E4F1;border-left: 20px solid #D8E4F1;">
-<p>&#160;</p></div><p>The Asset path to the copy of the Require JS JavaScript library to include in rendered pages. Any page that makes use of any JavaScript will automatically import this library (as well as the core JavaScript stack).</p><h3 id="Configuration-tapestry.secure-enabled">tapestry.secure-enabled</h3><p>If true, then @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Secure.html">Secure</a> annotations are honored; if false, no security checks or redirects take place. This defaults to tapestry.production-mode, meaning that in development mode it will (by default) be disabled.</p><h3 id="Configuration-tapestry.secure-page">tapestry.secure-page</h3><p>If true, then the page may only be accessed via HTTPS. The @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Secure.html">Secure</a> annotation will set this value to true. This symbol 
 is the default for all pages; set it to "true" to force the entire application to be secure.</p><h3 id="Configuration-tapestry.service-reloading-enabled">tapestry.service-reloading-enabled</h3>
+<p>Starting in 5.2, this is only used if tapestry.page-pool-enabled is "true". <em>Removed in 5.3</em></p></div><p>The time interval that Tapestry will wait for a page instance to become available before deciding whether to create an entirely new page instance.</p><p>The default is "10 ms" (10 milliseconds; see <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/util/TimeInterval.html">Time Interval Formats</a>).</p><h3 id="Configuration-tapestry.persistence-strategy">tapestry.persistence-strategy</h3><p>Identifies the default <a shape="rect" class="external-link" href="http://tapestry.apache.org/persistent-page-data.html#PersistentPageData-PersistenceStrategies">persistence strategy</a> for all pages that do not provide an override. The default is "session" (PersistenceConstants.SESSION).</p><h3 id="Configuration-tapestry.production-mode">tapestry.production-mode</h3><p>A flag (true or false) indicating whether the applica
 tion is running in production or in development. The default is true, which means that runtime exceptions are not reported with full detail (only the root exception message is displayed, not the entire stack of exceptions, properties and other information shown in development mode).</p><h3 id="Configuration-tapestry.secure-enabled">tapestry.secure-enabled</h3><p>If true, then @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Secure.html">Secure</a> annotations are honored; if false, no security checks or redirects take place. This defaults to tapestry.production-mode, meaning that in development mode it will (by default) be disabled.</p><h3 id="Configuration-tapestry.secure-page">tapestry.secure-page</h3><p>If true, then the page may only be accessed via HTTPS. The @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Secure.html">Secure</a> annot
 ation will set this value to true. This symbol is the default for all pages; set it to "true" to force the entire application to be secure.</p><h3 id="Configuration-tapestry.service-reloading-enabled">tapestry.service-reloading-enabled</h3>
 
     <div class="aui-message hint shadowed information-macro">
                     <p class="title">Added in 5.2</p>

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 Sat Jan 18 21:21:01 2014
@@ -69,17 +69,7 @@ table.ScrollbarTable td.ScrollbarParent 
 table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
 table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 16px;border: none;}
 
-/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" href="specific-errors-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/back_16.gif" width="16" height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" width="33%"><a shape="rect" href="specific-errors-faq.html">Specific Errors FAQ</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" width="33%"><sup><a shape="rect" href="frequently-asked-questions.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/up_16.gif" width="8" height="8"></a></sup><a shape="rect" href="frequently-asked-questions.html">Frequently Asked Questions</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a shape="rect" href="maven-support-faq.html">Maven Support FAQ</a></td><td colspan="1" rowspan="1" class="ScrollbarNextIcon"><a sha
 pe="rect" href="maven-support-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif" width="16" height="16"></a></td></tr></table></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>
-
-<style type="text/css">/*<![CDATA[*/
+/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" href="specific-errors-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/back_16.gif" width="16" height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" width="33%"><a shape="rect" href="specific-errors-faq.html">Specific Errors FAQ</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" width="33%"><sup><a shape="rect" href="frequently-asked-questions.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/up_16.gif" width="8" height="8"></a></sup><a shape="rect" href="frequently-asked-questions.html">Frequently Asked Questions</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a shape="rect" href="maven-support-faq.html">Maven Support FAQ</a></td><td colspan="1" rowspan="1" class="ScrollbarNextIcon"><a sha
 pe="rect" href="maven-support-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif" width="16" height="16"></a></td></tr></table></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><style type="text/css">/*<![CDATA[*/
 table.ScrollbarTable  {border: none;padding: 3px;width: 100%;padding: 3px;margin: 0px;background-color: #f0f0f0}
 table.ScrollbarTable td.ScrollbarPrevIcon {text-align: center;width: 16px;border: none;}
 table.ScrollbarTable td.ScrollbarPrevName {text-align: left;border: none;}

Modified: websites/production/tapestry/content/hibernate.html
==============================================================================
--- websites/production/tapestry/content/hibernate.html (original)
+++ websites/production/tapestry/content/hibernate.html Sat Jan 18 21:21:01 2014
@@ -104,7 +104,7 @@
                     <span class="icon icon-page" title="Page">Page:</span>            </div>
 
             <div class="details">
-                            <a shape="rect" href="hibernate.html">Hibernate</a>
+                            <a shape="rect" href="using-tapestry-with-hibernate.html">Using Tapestry With Hibernate</a>
                     
                 
                             </div>
@@ -113,30 +113,21 @@
                     <span class="icon icon-page" title="Page">Page:</span>            </div>
 
             <div class="details">
-                            <a shape="rect" href="using-tapestry-with-hibernate.html">Using Tapestry With Hibernate</a>
+                            <a shape="rect" href="hibernate-support-faq.html">Hibernate Support FAQ</a>
                     
                 
                             </div>
-        </li></ul>
-</div> 
-
-<p>The <strong>Tapestry/Hibernate Integration Library</strong> provides out-of-the-box support for using Hibernate 3 as the back end for normal CRUD style Tapestry applications.</p>
-
-<p>This represents access to the native Hibernate interfaces, exposed in a thread-safe manner, within a <em>session-per-request</em> strategy.</p>
-
-<p>Note that a number of the more esoteric ideas in Hibernate are not supported, including nested transactions and supporting multiple persistence units.</p>
-
-<p>The <a shape="rect" href="hibernate-core.html">tapestry-hibernate-core</a> module allows non-Tapestry applications to access Hibernate.</p>
-
-<h1 id="Hibernate-LicensingIssues">Licensing Issues</h1>
-
-<p>Hibernate is licensed under the Lesser GNU Public License. This is more restrictive license than the Apache Software License used by the rest of Tapestry. The restrictions mostly apply to redistributing Hibernate, especially in any altered form, and will likely be irrelevant to the vast majority of users, but you should be aware.</p>
-
-<p>This library is compiled against version <strong>3.3.1.GA</strong> of Hibernate (and version 3.4.0.GA of hibernate-annotations), but should work with more recent versions.</p>
-
-<h2 id="Hibernate-Notes">Notes</h2>
+        </li><li>
+            <div>
+                    <span class="icon icon-page" title="Page">Page:</span>            </div>
 
-<ul><li>Transactions are <em>aborted</em> (not <em>committed</em>) at the end of each request: you must explicitly commit the transaction if changes are to be saved.</li><li>The CommitAfter annotation for component and service methods can commit the transaction automatically after the method is invoked.</li><li><a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/hibernate/HibernateGridDataSource.html">HibernateGridDataSource</a> can be used with the Grid component to support optimized queries against large data sets.</li></ul></div>
+            <div class="details">
+                            <a shape="rect" href="hibernate.html">Hibernate</a>
+                    
+                
+                            </div>
+        </li></ul>
+</div><p>The <strong>Tapestry-Hibernate Integration Library</strong> provides out-of-the-box support for using Hibernate 3 as the back end for normal CRUD style Tapestry applications.</p><p>This represents access to the native Hibernate interfaces, exposed in a thread-safe manner, within a <em>session-per-request</em> strategy.</p><p>Note that a number of the more esoteric ideas in Hibernate are not supported, including nested transactions and supporting multiple persistence units.</p><p>The <a shape="rect" href="hibernate-core.html">tapestry-hibernate-core</a> module allows non-Tapestry applications to access Hibernate.</p><h1 id="Hibernate-LicensingIssues">Licensing Issues</h1><p>Hibernate is licensed under the Lesser GNU Public License. This is more restrictive license than the Apache Software License used by the rest of Tapestry. The restrictions mostly apply to redistributing Hibernate, especially in any altered form, and will likely be irrelevant to the vast majority of users,
  but you should be aware.</p><p>This library is compiled against version <strong>3.3.1.GA</strong> of Hibernate (and version 3.4.0.GA of hibernate-annotations), but should work with more recent versions.</p><h2 id="Hibernate-Notes">Notes</h2><ul><li>Transactions are <em>aborted</em> (not <em>committed</em>) at the end of each request: you must explicitly commit the transaction if changes are to be saved.</li><li>The CommitAfter annotation for component and service methods can commit the transaction automatically after the method is invoked.</li><li><a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/hibernate/HibernateGridDataSource.html">HibernateGridDataSource</a> can be used with the Grid component to support optimized queries against large data sets.</li></ul></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/implementing-the-hi-lo-guessing-game.html
==============================================================================
--- websites/production/tapestry/content/implementing-the-hi-lo-guessing-game.html (original)
+++ websites/production/tapestry/content/implementing-the-hi-lo-guessing-game.html Sat Jan 18 21:21:01 2014
@@ -96,12 +96,12 @@ table.ScrollbarTable td.ScrollbarNextIco
 {
 }
 ]]></script>
-</div></div><p>Running the application gives us our start:</p><p><img class="confluence-embedded-image confluence-thumbnail" src="implementing-the-hi-lo-guessing-game.thumbs/hilo-1.png" data-image-src="/confluence/download/attachments/23340505/hilo-1.png?version=1&amp;modificationDate=1290111983000&amp;api=v2"></p><p>However, clicking the link doesn't do anything yet, as its just a placeholder \&lt;a\&gt; tag, not an actual Tapestry component. Let's think about what should happen when the user clicks that link:</p><ul><li>A random target number between 1 and 10 should be selected</li><li>The number of guesses taken should be reset to 0</li><li>The user should be sent to the Guess page to make a guess</li></ul><p>Our first step is to find out when the user clicks that "start guessing" link. In a typical web application framework, we might start thinking about URLs and handlers and maybe some sort of XML configuration file. But this is Tapestry, so we're going to work with components 
 and methods on our classes.</p><p>First, the component. We want to perform an action (selecting the number) before continuing on to the Guess page. The ActionLink component is just what we need; it creates a link with a URL that will trigger an action event in our code ... but that's getting ahead of ourselves. First up, convert the \&lt;a\&gt; tag to an ActionLink component:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Index.tml (partial)</b></div><div class="codeContent panelContent pdl">
+</div></div><p>Running the application gives us our start:</p><p><img class="confluence-embedded-image" width="700" src="https://cwiki.apache.org/confluence/download/attachments/23340505/hilo-1.png?version=1&amp;modificationDate=1290111983000&amp;api=v2" data-image-src="/confluence/download/attachments/23340505/hilo-1.png?version=1&amp;modificationDate=1290111983000&amp;api=v2"></p><p>However, clicking the link doesn't do anything yet, as its just a placeholder \&lt;a\&gt; tag, not an actual Tapestry component. Let's think about what should happen when the user clicks that link:</p><ul><li>A random target number between 1 and 10 should be selected</li><li>The number of guesses taken should be reset to 0</li><li>The user should be sent to the Guess page to make a guess</li></ul><p>Our first step is to find out when the user clicks that "start guessing" link. In a typical web application framework, we might start thinking about URLs and handlers and maybe some sort of XML configuratio
 n file. But this is Tapestry, so we're going to work with components and methods on our classes.</p><p>First, the component. We want to perform an action (selecting the number) before continuing on to the Guess page. The ActionLink component is just what we need; it creates a link with a URL that will trigger an action event in our code ... but that's getting ahead of ourselves. First up, convert the \&lt;a\&gt; tag to an ActionLink component:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Index.tml (partial)</b></div><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[  &lt;p&gt;
     &lt;t:actionlink t:id=&quot;start&quot;&gt;start guessing&lt;/t:actionlink&gt;
   &lt;/p&gt;
 ]]></script>
-</div></div><p>If you refresh the browser, you'll see that the URL for the "start guessing" link is now /tutorial1/index.start, which identifies the name of the page ("index") and the id of the component ("start").</p><p>If you click the link, you'll get an error:</p><p><img class="confluence-embedded-image confluence-thumbnail" src="implementing-the-hi-lo-guessing-game.thumbs/hilo-index-missing-action-error.png" data-image-src="/confluence/download/attachments/23340505/hilo-index-missing-action-error.png?version=1&amp;modificationDate=1290112782000&amp;api=v2"></p><p>Tapestry is telling us that we need to provide some kind of event handler for that event. What does that look like?</p><p>An event handler is a method of the Java class with a special name. The name is <code>on</code><em>event-name</em><code>From</code><em>component-id</em> ... here we want a method named <code>onActionFromStart()</code>. How do we know that "action" is the right event name? Because that's what ActionL
 ink does, that's why its named _Action_Link.</p><p>Once again, Tapestry gives us options; if you don't like naming conventions, there's an @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/OnEvent.html">OnEvent</a> annotation you can place on the method instead, which restores the freedom to name the method as you like. Details about this approach are in the <a shape="rect" href="component-events.html">Tapestry Users' Guide</a>. We'll be sticking with the naming convention approach for the tutorial.</p><p>When handling a component event request (the kind of request triggered by the ActionLink component's URL), Tapestry will find the component and trigger a component event on it. This is the callback our server-side code needs to figure out what the user is doing on the client side. Let's start with an empty event handler:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader
  pdl" style="border-bottom-width: 1px;"><b>Index.java</b></div><div class="codeContent panelContent pdl">
+</div></div><p>If you refresh the browser, you'll see that the URL for the "start guessing" link is now /tutorial1/index.start, which identifies the name of the page ("index") and the id of the component ("start").</p><p>If you click the link, you'll get an error:</p><p><img class="confluence-embedded-image" width="700" src="https://cwiki.apache.org/confluence/download/attachments/23340505/hilo-index-missing-action-error.png?version=1&amp;modificationDate=1290112782000&amp;api=v2" data-image-src="/confluence/download/attachments/23340505/hilo-index-missing-action-error.png?version=1&amp;modificationDate=1290112782000&amp;api=v2"></p><p>Tapestry is telling us that we need to provide some kind of event handler for that event. What does that look like?</p><p>An event handler is a method of the Java class with a special name. The name is <code>on</code><em>event-name</em><code>From</code><em>component-id</em> ... here we want a method named <code>onActionFromStart()</code>. How do we kn
 ow that "action" is the right event name? Because that's what ActionLink does, that's why its named _Action_Link.</p><p>Once again, Tapestry gives us options; if you don't like naming conventions, there's an @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/OnEvent.html">OnEvent</a> annotation you can place on the method instead, which restores the freedom to name the method as you like. Details about this approach are in the <a shape="rect" href="component-events.html">Tapestry Users' Guide</a>. We'll be sticking with the naming convention approach for the tutorial.</p><p>When handling a component event request (the kind of request triggered by the ActionLink component's URL), Tapestry will find the component and trigger a component event on it. This is the callback our server-side code needs to figure out what the user is doing on the client side. Let's start with an empty event handler:</p><div class="code pan
 el pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Index.java</b></div><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[package com.example.tutorial.pages;
 
 public class Index
@@ -180,7 +180,7 @@ public class Index
                             <p>When creating your own applications, make sure that the objects stored in final variables are thread safe. It seems counter-intuitive, but final variables are shared across many threads. Ordinary instance variables are not. Fortunately, the implementation of Random is, in fact, thread safe.</p>
                     </div>
     </div>
-<p>So ... let's click the link and see what we get:</p><p><img class="confluence-embedded-image confluence-thumbnail" src="implementing-the-hi-lo-guessing-game.thumbs/guess-template-missing.png" data-image-src="/confluence/download/attachments/23340505/guess-template-missing.png?version=1&amp;modificationDate=1290115417000&amp;api=v2"></p><p>Ah! We didn't create a Guess page template. Tapestry was really expecting us to create one, so we better do so.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>src/main/resources/com/example/tutorial/pages/Guess.tml</b></div><div class="codeContent panelContent pdl">
+<p>So ... let's click the link and see what we get:</p><p><img class="confluence-embedded-image" width="700" src="https://cwiki.apache.org/confluence/download/attachments/23340505/guess-template-missing.png?version=1&amp;modificationDate=1290115417000&amp;api=v2" data-image-src="/confluence/download/attachments/23340505/guess-template-missing.png?version=1&amp;modificationDate=1290115417000&amp;api=v2"></p><p>Ah! We didn't create a Guess page template. Tapestry was really expecting us to create one, so we better do so.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>src/main/resources/com/example/tutorial/pages/Guess.tml</b></div><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[&lt;html t:type=&quot;layout&quot; title=&quot;Guess The Number&quot;
   xmlns:t=&quot;http://tapestry.apache.org/schema/tapestry_5_3.xsd&quot;&gt;
 
@@ -190,16 +190,16 @@ public class Index
   
 &lt;/html&gt;
 ]]></script>
-</div></div><p>Hit the browser's back button, then click the "start guessing" link again. We're getting closer:</p><p><img class="confluence-embedded-image confluence-thumbnail" src="implementing-the-hi-lo-guessing-game.thumbs/guess-no-target-prop.png" data-image-src="/confluence/download/attachments/23340505/guess-no-target-prop.png?version=1&amp;modificationDate=1290115655000&amp;api=v2"></p><p>If you scroll down, you'll see the line of the Guess.tml template that has the error. We have a field named target, but it is private and there's no corresponding property, so Tapestry was unable to access it.</p><p>We just need to write the missing JavaBeans accessor methods <code>getTarget()</code> (and <code>setTarget()</code> for good measure). Or we could let Tapestry write those methods instead:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>Hit the browser's back button, then click the "start guessing" link again. We're getting closer:</p><p><img class="confluence-embedded-image" width="700" src="https://cwiki.apache.org/confluence/download/attachments/23340505/guess-no-target-prop.png?version=1&amp;modificationDate=1290115655000&amp;api=v2" data-image-src="/confluence/download/attachments/23340505/guess-no-target-prop.png?version=1&amp;modificationDate=1290115655000&amp;api=v2"></p><p>If you scroll down, you'll see the line of the Guess.tml template that has the error. We have a field named target, but it is private and there's no corresponding property, so Tapestry was unable to access it.</p><p>We just need to write the missing JavaBeans accessor methods <code>getTarget()</code> (and <code>setTarget()</code> for good measure). Or we could let Tapestry write those methods instead:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[  @Property
   private int target;
 ]]></script>
-</div></div><p>The @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Property.html">Property</a> annotation very simply directs Tapestry to write the getter and setter method for you. You only need to do this if you are going to reference the field from the template.</p><p>We are getting very close but there's one last big oddity to handle. Once you refresh the page you'll see that target is 0!</p><p><img class="confluence-embedded-image confluence-thumbnail" src="implementing-the-hi-lo-guessing-game.thumbs/guess-target-zero.png" data-image-src="/confluence/download/attachments/23340505/guess-target-zero.png?version=1&amp;modificationDate=1290115961000&amp;api=v2"></p><p>What gives? We know it was set to at least 1 ... where did the value go?</p><p>As noted above, Tapestry sends a redirect to the client after handling the event request. That means that the rendering of the page happens in an entirely new request.
  Meanwhile, at the end of each request, Tapestry wipes out the value in each instance variable. So that means that target <em>was</em> a non-zero number during the component event request ... but by the time the new page render request comes up from the web browser to render the Guess page, the value of the target field has reverted back to its default, zero.</p><p>The solution here is to mark which fields have values that should persist from one request to the next (and next, and next ...). That's what the @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Persist.html">Persist</a> annotation is for:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>The @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Property.html">Property</a> annotation very simply directs Tapestry to write the getter and setter method for you. You only need to do this if you are going to reference the field from the template.</p><p>We are getting very close but there's one last big oddity to handle. Once you refresh the page you'll see that target is 0!</p><p><img class="confluence-embedded-image" width="700" src="https://cwiki.apache.org/confluence/download/attachments/23340505/guess-target-zero.png?version=1&amp;modificationDate=1290115961000&amp;api=v2" data-image-src="/confluence/download/attachments/23340505/guess-target-zero.png?version=1&amp;modificationDate=1290115961000&amp;api=v2"></p><p>What gives? We know it was set to at least 1 ... where did the value go?</p><p>As noted above, Tapestry sends a redirect to the client after handling the event request. That mea
 ns that the rendering of the page happens in an entirely new request. Meanwhile, at the end of each request, Tapestry wipes out the value in each instance variable. So that means that target <em>was</em> a non-zero number during the component event request ... but by the time the new page render request comes up from the web browser to render the Guess page, the value of the target field has reverted back to its default, zero.</p><p>The solution here is to mark which fields have values that should persist from one request to the next (and next, and next ...). That's what the @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Persist.html">Persist</a> annotation is for:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[  @Property  
   @Persist
   private int target;
 ]]></script>
-</div></div><p>This doesn't have anything to do with database persistence (that's coming up in a later chapter). It means that the value is stored in the HttpSession between requests.</p><p>Go back to the Index page and click the link again. Finally, we have a target number:</p><p><img class="confluence-embedded-image confluence-thumbnail" src="implementing-the-hi-lo-guessing-game.thumbs/guess-target.png" data-image-src="/confluence/download/attachments/23340505/guess-target.png?version=1&amp;modificationDate=1290116253000&amp;api=v2"></p><p>That enough for us to get started. Let's build out the Guess page, and get ready to let the user make guesses. We'll show the count of guesses, and increment that count when they make them. We'll worry about high and low and actually selecting the correct value later.</p><p>When building Tapestry pages, you sometimes start with the Java code and build the template to match, and sometime start with the template and build the Java code to match. B
 oth approaches are valid. Here, lets start with the markup in the template, then figure out what we need in the Java code to make it work.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Guess.tml (revised)</b></div><div class="codeContent panelContent pdl">
+</div></div><p>This doesn't have anything to do with database persistence (that's coming up in a later chapter). It means that the value is stored in the HttpSession between requests.</p><p>Go back to the Index page and click the link again. Finally, we have a target number:</p><p><img class="confluence-embedded-image" width="700" src="https://cwiki.apache.org/confluence/download/attachments/23340505/guess-target.png?version=1&amp;modificationDate=1290116253000&amp;api=v2" data-image-src="/confluence/download/attachments/23340505/guess-target.png?version=1&amp;modificationDate=1290116253000&amp;api=v2"></p><p>That enough for us to get started. Let's build out the Guess page, and get ready to let the user make guesses. We'll show the count of guesses, and increment that count when they make them. We'll worry about high and low and actually selecting the correct value later.</p><p>When building Tapestry pages, you sometimes start with the Java code and build the template to match, and
  sometime start with the template and build the Java code to match. Both approaches are valid. Here, lets start with the markup in the template, then figure out what we need in the Java code to make it work.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Guess.tml (revised)</b></div><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[&lt;html t:type=&quot;layout&quot; title=&quot;Guess The Number&quot;
   xmlns:t=&quot;http://tapestry.apache.org/schema/tapestry_5_3.xsd&quot;
   xmlns:p=&quot;tapestry:parameter&quot;&gt;
@@ -259,7 +259,7 @@ public class Guess
 
 }
 ]]></script>
-</div></div><p>The revised version of Guess includes two new properties: <code>current</code> and <code>guessCount</code>. There's also a handler for the action event from the makeGuess ActionLink component; currently it just increments the count.</p><p>Notice that the <code>onActionFromMakeGuess()</code> method now has a parameter: the context value that was encoded into the URL by the ActionLink. When then user clicks the link, Tapestry will automatically extract the string from the URL, convert it to an int and pass that int value into the event handler method. More boilerplate code you don't have to write.</p><p>At this point, the page is partially operational:</p><p><img class="confluence-embedded-image confluence-thumbnail" src="implementing-the-hi-lo-guessing-game.thumbs/guess-1.png" data-image-src="/confluence/download/attachments/23340505/guess-1.png?version=1&amp;modificationDate=1290119564000&amp;api=v2"></p><p>Our next step is to actually check the value provided by the 
 user against the target and provide feedback: either they guessed too high, or too low, or just right. If they get it just right, we'll switch to the GameOver page.</p><p>For wrong guesses, we'll see an update such as:</p><p><img class="confluence-embedded-image confluence-thumbnail" src="implementing-the-hi-lo-guessing-game.thumbs/guess_feedback.png" data-image-src="/confluence/download/attachments/23340505/guess_feedback.png?version=1&amp;modificationDate=1291918635000&amp;api=v2"></p><p>And correct guesses will send us to the GameOver page:</p><p><img class="confluence-embedded-image confluence-thumbnail" src="implementing-the-hi-lo-guessing-game.thumbs/gameover.png" data-image-src="/confluence/download/attachments/23340505/gameover.png?version=1&amp;modificationDate=1291918700000&amp;api=v2"></p><p>Let's start with the Guess page; it now needs a new property to store the message to be displayed to the user, and needs a field for the injected GameOver page:</p><div class="code pa
 nel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Guess.java (partial)</b></div><div class="codeContent panelContent pdl">
+</div></div><p>The revised version of Guess includes two new properties: <code>current</code> and <code>guessCount</code>. There's also a handler for the action event from the makeGuess ActionLink component; currently it just increments the count.</p><p>Notice that the <code>onActionFromMakeGuess()</code> method now has a parameter: the context value that was encoded into the URL by the ActionLink. When then user clicks the link, Tapestry will automatically extract the string from the URL, convert it to an int and pass that int value into the event handler method. More boilerplate code you don't have to write.</p><p>At this point, the page is partially operational:</p><p><img class="confluence-embedded-image" width="700" src="https://cwiki.apache.org/confluence/download/attachments/23340505/guess-1.png?version=1&amp;modificationDate=1290119564000&amp;api=v2" data-image-src="/confluence/download/attachments/23340505/guess-1.png?version=1&amp;modificationDate=1290119564000&amp;api=v2"
 ></p><p>Our next step is to actually check the value provided by the user against the target and provide feedback: either they guessed too high, or too low, or just right. If they get it just right, we'll switch to the GameOver page.</p><p>For wrong guesses, we'll see an update such as:</p><p><img class="confluence-embedded-image" width="700" src="https://cwiki.apache.org/confluence/download/attachments/23340505/guess_feedback.png?version=1&amp;modificationDate=1291918635000&amp;api=v2" data-image-src="/confluence/download/attachments/23340505/guess_feedback.png?version=1&amp;modificationDate=1291918635000&amp;api=v2"></p><p>And correct guesses will send us to the GameOver page:</p><p><img class="confluence-embedded-image" width="700" src="https://cwiki.apache.org/confluence/download/attachments/23340505/gameover.png?version=1&amp;modificationDate=1291918700000&amp;api=v2" data-image-src="/confluence/download/attachments/23340505/gameover.png?version=1&amp;modificationDate=129191870
 0000&amp;api=v2"></p><p>Let's start with the Guess page; it now needs a new property to store the message to be displayed to the user, and needs a field for the injected GameOver page:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Guess.java (partial)</b></div><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[  @Property
   @Persist(PersistenceConstants.FLASH)
   private String message;

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 Sat Jan 18 21:21:01 2014
@@ -77,95 +77,8 @@ table.ScrollbarTable td.ScrollbarParent 
 table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
 table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 16px;border: none;}
 
-/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" href="security-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/back_16.gif" width="16" height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" width="33%"><a shape="rect" href="security-faq.html">Security FAQ</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" width="33%"><sup><a shape="rect" href="frequently-asked-questions.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/up_16.gif" width="8" height="8"></a></sup><a shape="rect" href="frequently-asked-questions.html">Frequently Asked Questions</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a shape="rect" href="request-processing-faq.html">Request Processing FAQ</a></td><td colspan="1" rowspan="1" class="ScrollbarNextIcon"><a shape="rect" h
 ref="request-processing-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif" width="16" height="16"></a></td></tr></table></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 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</code></p><p>&lt;style type='text/css'&gt;
-.FootnoteMarker, .FootnoteNum a {
-  background: transparent url(/confluence/download/resources/com.adaptavist.confluence.footnoteMacros:footnote/gfx/footnote.png) no-repeat top right;
-  padding: 1px 2px 0px 1px;
-  border-left: 1px solid #8898B8;
-  border-bottom: 1px solid #6B7C9B;
-  margin: 1px;
-  text-decoration: none;
-}
-.FootnoteNum a {
-  margin-top: 2px;
-  margin-right: 0px;
-}
-.FootnoteNum {
-  font-size: x-small;
-  text-align: right;
-  padding-bottom: 4px;
-}
-.footnote-th1 {
-  text-align: right;
-}
-.Footnote {
-  padding-left: 7px;
-  margin-bottom: 4px;
-  border: 1px none #DDDDDD;
-  writingMode: tb-rl;
-}
-.accessibility {
-     display: none;
-     visibility: hidden;
-}
-@media aural,braille,embossed {
-        .FootnoteMarker, .FootnoteNum a {
-         border: 1px solid #000000;
-         background: #ffffff none;
-    }
-    .accessibility {
-         display: run-in;
-         visibility: visible;
-    }
-}
-&lt;/style&gt;
-&lt;script type='text/javascript' language='JavaScript'&gt;
-//&lt;!--\n
-var effectInProgress = {};
-var despamEffect = function (id,effectType,duration) {
-  if ((effectInProgress[id]) || (typeof(Effect)=="undefined") || (typeof(Effect[effectType])=="undefined")) return;
-  new Effect[effectType](id);
-  effectInProgress[id]=true;
-  setTimeout('effectInProgress[\"'+id+'\"]=false;',duration*1000);
-};
-var oldFootnoteId = '';
-var footnoteHighlight = function(id,pulsateNum) {
-  if (oldFootnoteId!='') document.getElementById('Footnote'+oldFootnoteId).style['borderStyle'] = 'none';
-  oldFootnoteId = id;
-  document.getElementById('Footnote'+id).style['borderStyle'] = 'solid';
-  despamEffect('Footnote'+id,'Highlight',1)
-  if (pulsateNum) despamEffect('FootnoteNum'+id,'Pulsate',3)
-}
-var footnoteMarkerHighlight = function(id) {
-  if (oldFootnoteId!='') document.getElementById('Footnote'+oldFootnoteId).style['borderStyle'] = 'none';
-  oldFootnoteId = '';
-  despamEffect('FootnoteMarker'+id,'Pulsate',3)
-}
-//--&gt;
-&lt;/script&gt;
-
-<sup id="FootnoteMarker1">
-    <a shape="rect" class="FootnoteMarker" name="FootnoteMarker1" href="#Footnote1" onclick="footnoteHighlight(&quot;1&quot;,true);" alt="Footnote: Click here to display the footnote" title="Footnote: Click here to display the footnote">
-            1
-    </a>
-</sup>
-</p>, and the URL will be <code>/loginform</code>.<p></p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: true" type="syntaxhighlighter"><![CDATA[
-&lt;form method=&quot;post&quot; action=&quot;/loginform&quot;&gt;
+/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" href="security-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/back_16.gif" width="16" height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" width="33%"><a shape="rect" href="security-faq.html">Security FAQ</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" width="33%"><sup><a shape="rect" href="frequently-asked-questions.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/up_16.gif" width="8" height="8"></a></sup><a shape="rect" href="frequently-asked-questions.html">Frequently Asked Questions</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a shape="rect" href="request-processing-faq.html">Request Processing FAQ</a></td><td colspan="1" rowspan="1" class="ScrollbarNextIcon"><a shape="rect" h
 ref="request-processing-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif" width="16" height="16"></a></td></tr></table></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 a
 ll 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 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 t
 he 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">
+<script class="theme: Default; brush: java; gutter: true" type="syntaxhighlighter"><![CDATA[&lt;form method=&quot;post&quot; action=&quot;/loginform&quot;&gt;
 
   &lt;input type=&quot;text&quot; value=&quot;userName&quot;/&gt;
   &lt;br/&gt;
@@ -175,13 +88,8 @@ var footnoteMarkerHighlight = function(i
 
 &lt;/form&gt;
 ]]></script>
-</div></div>
-
-<p>On the Tapestry side, we can expect that the LoginForm page will be activated; this means that its activate event handler will be invoked.  We can leverage this, and Tapestry's RequestParameter annotation:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: true" type="syntaxhighlighter"><![CDATA[
-public class LoginForm
+</div></div><p>On the Tapestry side, we can expect that the LoginForm page will be activated; this means that its activate event handler will be invoked. We can leverage this, and Tapestry's RequestParameter annotation:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: true" type="syntaxhighlighter"><![CDATA[public class LoginForm
 {
   void onActivate(@RequestParameter(&quot;userName&quot;) String userName, @RequestParameter(&quot;password&quot;) String password)
   {
@@ -189,38 +97,14 @@ public class LoginForm
   }
 }
 ]]></script>
-</div></div>
-
-<p>The RequestParameter annotation extracts the named query parameter from the request, coerces its type from String to the parameter type (here, also String) and passes it into the method.</p>
-
-
-<h3 id="Integrationwithexistingapplications-HowdoIshareinformationbetweenaJSPapplicationandtheTapestryapplication?">How do I share information between a JSP application and the Tapestry application?</h3>
-
-<p>From the servlet container's point of view, there's no difference between a servlet, a JSP, and an entire Tapestry application. They all share the same ServletContext, and (once created), the same HttpSession.</p>
-
-<p>On the Tapestry side, it is very easy to read and write session attributes:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: true" type="syntaxhighlighter"><![CDATA[
-public class ShowSearchResults
+</div></div><p>The RequestParameter annotation extracts the named query parameter from the request, coerces its type from String to the parameter type (here, also String) and passes it into the method.</p><h3 id="Integrationwithexistingapplications-HowdoIshareinformationbetweenaJSPapplicationandtheTapestryapplication?">How do I share information between a JSP application and the Tapestry application?</h3><p>From the servlet container's point of view, there's no difference between a servlet, a JSP, and an entire Tapestry application. They all share the same ServletContext, and (once created), the same HttpSession.</p><p>On the Tapestry side, it is very easy to read and write session attributes:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: true" type="syntaxhighlighter"><![CDATA[public class ShowSearchResults
 {
   @SessionAttribute
   private SearchResults searchResults;
 }
 ]]></script>
-</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-Configuration-SegregatingApplicationsIntoFolders">configuration page</a>. </p>
-
-<style type="text/css">/*<![CDATA[*/
+</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-Configuration-SegregatingApplicationsIntoFolders">configuration page</a>.</p><style type="text/css">/*<![CDATA[*/
 table.ScrollbarTable  {border: none;padding: 3px;width: 100%;padding: 3px;margin: 0px;background-color: #f0f0f0}
 table.ScrollbarTable td.ScrollbarPrevIcon {text-align: center;width: 16px;border: none;}
 table.ScrollbarTable td.ScrollbarPrevName {text-align: left;border: none;}
@@ -228,16 +112,7 @@ table.ScrollbarTable td.ScrollbarParent 
 table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
 table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 16px;border: none;}
 
-/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" href="security-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/back_16.gif" width="16" height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" width="33%"><a shape="rect" href="security-faq.html">Security FAQ</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" width="33%"><sup><a shape="rect" href="frequently-asked-questions.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/up_16.gif" width="8" height="8"></a></sup><a shape="rect" href="frequently-asked-questions.html">Frequently Asked Questions</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a shape="rect" href="request-processing-faq.html">Request Processing FAQ</a></td><td colspan="1" rowspan="1" class="ScrollbarNextIcon"><a shape="rect" h
 ref="request-processing-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif" width="16" height="16"></a></td></tr></table></div>
-
-<hr>
-<p></p><p><table class="Footnotes" style="width: 100%; border:none;" cellspacing="0" cellpadding="0" summary="This table contains one or more notes for references made elsewhere on the page."><caption class="accessibility">Footnotes</caption><thead class="accessibility"><tr class="accessibility"><th colspan="1" rowspan="1" class="accessibility" id="footnote-th1">Reference</th><th colspan="1" rowspan="1" class="accessibility" id="footnote-th2">Notes</th></tr></thead><tbody><tr name="Footnote1"><td colspan="1" rowspan="1" valign="top" class="FootnoteNum" headings="footnote-th1">
-        <a shape="rect" id="FootnoteNum1" href="#FootnoteMarker1" onclick="footnoteMarkerHighlight(&quot;1&quot;);" onmouseover="footnoteHighlight(&quot;1&quot;,false);" alt="Footnote: Click to return to reference in text" title="Footnote: Click to return to reference in text">
-            1
-        </a>
-      </td><td colspan="1" rowspan="1" valign="top" class="Footnote" id="Footnote1" width="100%" headings="footnote-th2">
-          Tapestry is case insensitive, so LoginForm would work just as well.
-      </td></tr></tbody></table></p><p></p></div>
+/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" href="security-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/back_16.gif" width="16" height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" width="33%"><a shape="rect" href="security-faq.html">Security FAQ</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" width="33%"><sup><a shape="rect" href="frequently-asked-questions.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/up_16.gif" width="8" height="8"></a></sup><a shape="rect" href="frequently-asked-questions.html">Frequently Asked Questions</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a shape="rect" href="request-processing-faq.html">Request Processing FAQ</a></td><td colspan="1" rowspan="1" class="ScrollbarNextIcon"><a shape="rect" h
 ref="request-processing-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif" width="16" height="16"></a></td></tr></table></div><p>&#160;</p><p>&#160;</p><p>&#160;</p></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/limitations.html
==============================================================================
--- websites/production/tapestry/content/limitations.html (original)
+++ websites/production/tapestry/content/limitations.html Sat Jan 18 21:21:01 2014
@@ -77,108 +77,8 @@ table.ScrollbarTable td.ScrollbarParent 
 table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
 table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 16px;border: none;}
 
-/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" href="request-processing-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/back_16.gif" width="16" height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" width="33%"><a shape="rect" href="request-processing-faq.html">Request Processing FAQ</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" width="33%"><sup><a shape="rect" href="frequently-asked-questions.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/up_16.gif" width="8" height="8"></a></sup><a shape="rect" href="frequently-asked-questions.html">Frequently Asked Questions</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a shape="rect" href="specific-errors-faq.html">Specific Errors FAQ</a></td><td colspan="1" rowspan="1" class="ScrollbarNex
 tIcon"><a shape="rect" href="specific-errors-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif" width="16" height="16"></a></td></tr></table></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</p><p>&lt;style type='text/css'&gt;
-.FootnoteMarker, .FootnoteNum a {
-  background: transparent url(/confluence/download/resources/com.adaptavist.confluence.footnoteMacros:footnote/gfx/footnote.png) no-repeat top right;
-  padding: 1px 2px 0px 1px;
-  border-left: 1px solid #8898B8;
-  border-bottom: 1px solid #6B7C9B;
-  margin: 1px;
-  text-decoration: none;
-}
-.FootnoteNum a {
-  margin-top: 2px;
-  margin-right: 0px;
-}
-.FootnoteNum {
-  font-size: x-small;
-  text-align: right;
-  padding-bottom: 4px;
-}
-.footnote-th1 {
-  text-align: right;
-}
-.Footnote {
-  padding-left: 7px;
-  margin-bottom: 4px;
-  border: 1px none #DDDDDD;
-  writingMode: tb-rl;
-}
-.accessibility {
-     display: none;
-     visibility: hidden;
-}
-@media aural,braille,embossed {
-        .FootnoteMarker, .FootnoteNum a {
-         border: 1px solid #000000;
-         background: #ffffff none;
-    }
-    .accessibility {
-         display: run-in;
-         visibility: visible;
-    }
-}
-&lt;/style&gt;
-&lt;script type='text/javascript' language='JavaScript'&gt;
-//&lt;!--\n
-var effectInProgress = {};
-var despamEffect = function (id,effectType,duration) {
-  if ((effectInProgress[id]) || (typeof(Effect)=="undefined") || (typeof(Effect[effectType])=="undefined")) return;
-  new Effect[effectType](id);
-  effectInProgress[id]=true;
-  setTimeout('effectInProgress[\"'+id+'\"]=false;',duration*1000);
-};
-var oldFootnoteId = '';
-var footnoteHighlight = function(id,pulsateNum) {
-  if (oldFootnoteId!='') document.getElementById('Footnote'+oldFootnoteId).style['borderStyle'] = 'none';
-  oldFootnoteId = id;
-  document.getElementById('Footnote'+id).style['borderStyle'] = 'solid';
-  despamEffect('Footnote'+id,'Highlight',1)
-  if (pulsateNum) despamEffect('FootnoteNum'+id,'Pulsate',3)
-}
-var footnoteMarkerHighlight = function(id) {
-  if (oldFootnoteId!='') document.getElementById('Footnote'+oldFootnoteId).style['borderStyle'] = 'none';
-  oldFootnoteId = '';
-  despamEffect('FootnoteMarker'+id,'Pulsate',3)
-}
-//--&gt;
-&lt;/script&gt;
-
-<sup id="FootnoteMarker1">
-    <a shape="rect" class="FootnoteMarker" name="FootnoteMarker1" href="#Footnote1" onclick="footnoteHighlight(&quot;1&quot;,true);" alt="Footnote: Click here to display the footnote" title="Footnote: Click here to display the footnote">
-            1
-    </a>
-</sup>
-</p>, 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 code, rewriting it on the fly.<p></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#DefiningTapestryIOCServices-ServiceScope">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">
-<script class="theme: Default; brush: java; gutter: true" type="syntaxhighlighter"><![CDATA[
-public static void bind(ServiceBinder binder)
+/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" href="request-processing-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/back_16.gif" width="16" height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" width="33%"><a shape="rect" href="request-processing-faq.html">Request Processing FAQ</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" width="33%"><sup><a shape="rect" href="frequently-asked-questions.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/up_16.gif" width="8" height="8"></a></sup><a shape="rect" href="frequently-asked-questions.html">Frequently Asked Questions</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a shape="rect" href="specific-errors-faq.html">Specific Errors FAQ</a></td><td colspan="1" rowspan="1" class="ScrollbarNex
 tIcon"><a shape="rect" href="specific-errors-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif" width="16" height="16"></a></td></tr></table></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-heigh
 t: 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 code, rewriting it on the fly.</span></p><p>&#160;</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#DefiningTapestryIOCServices-ServiceScope">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">
+<script class="theme: Default; brush: java; gutter: true" type="syntaxhighlighter"><![CDATA[public static void bind(ServiceBinder binder)
 {
   binder.bind(ArchiveService.class, ArchiveServiceImpl.class);
 }
@@ -192,19 +92,7 @@ public static JobQueue buildJobQueue(Mes
   return service;
 }
 ]]></script>
-</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>This is not supported; there's only one place to identify the application root package, so even configuring 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>
-
-<style type="text/css">/*<![CDATA[*/
+</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>This is not supported; there's only one place to identify the application root package, so even configuring 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><style type="text/css">/*<![CDATA[*/
 table.ScrollbarTable  {border: none;padding: 3px;width: 100%;padding: 3px;margin: 0px;background-color: #f0f0f0}
 table.ScrollbarTable td.ScrollbarPrevIcon {text-align: center;width: 16px;border: none;}
 table.ScrollbarTable td.ScrollbarPrevName {text-align: left;border: none;}
@@ -212,16 +100,7 @@ table.ScrollbarTable td.ScrollbarParent 
 table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
 table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 16px;border: none;}
 
-/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" href="request-processing-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/back_16.gif" width="16" height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" width="33%"><a shape="rect" href="request-processing-faq.html">Request Processing FAQ</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" width="33%"><sup><a shape="rect" href="frequently-asked-questions.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/up_16.gif" width="8" height="8"></a></sup><a shape="rect" href="frequently-asked-questions.html">Frequently Asked Questions</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a shape="rect" href="specific-errors-faq.html">Specific Errors FAQ</a></td><td colspan="1" rowspan="1" class="ScrollbarNex
 tIcon"><a shape="rect" href="specific-errors-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif" width="16" height="16"></a></td></tr></table></div>
-
-<hr>
-<p></p><p><table class="Footnotes" style="width: 100%; border:none;" cellspacing="0" cellpadding="0" summary="This table contains one or more notes for references made elsewhere on the page."><caption class="accessibility">Footnotes</caption><thead class="accessibility"><tr class="accessibility"><th colspan="1" rowspan="1" class="accessibility" id="footnote-th1">Reference</th><th colspan="1" rowspan="1" class="accessibility" id="footnote-th2">Notes</th></tr></thead><tbody><tr name="Footnote1"><td colspan="1" rowspan="1" valign="top" class="FootnoteNum" headings="footnote-th1">
-        <a shape="rect" id="FootnoteNum1" href="#FootnoteMarker1" onclick="footnoteMarkerHighlight(&quot;1&quot;);" onmouseover="footnoteHighlight(&quot;1&quot;,false);" alt="Footnote: Click to return to reference in text" title="Footnote: Click to return to reference in text">
-            1
-        </a>
-      </td><td colspan="1" rowspan="1" valign="top" class="Footnote" id="Footnote1" width="100%" headings="footnote-th2">
-          Plain Old Java Object. Tapestry does not require you to extend any base classes or implement any special interfaces.
-      </td></tr></tbody></table></p><p></p></div>
+/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" href="request-processing-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/back_16.gif" width="16" height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" width="33%"><a shape="rect" href="request-processing-faq.html">Request Processing FAQ</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" width="33%"><sup><a shape="rect" href="frequently-asked-questions.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/up_16.gif" width="8" height="8"></a></sup><a shape="rect" href="frequently-asked-questions.html">Frequently Asked Questions</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a shape="rect" href="specific-errors-faq.html">Specific Errors FAQ</a></td><td colspan="1" rowspan="1" class="ScrollbarNex
 tIcon"><a shape="rect" href="specific-errors-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif" width="16" height="16"></a></td></tr></table></div><p>&#160;</p><p>&#160;</p><p>&#160;</p></div>
 </div>
 
 <div class="clearer"></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 Sat Jan 18 21:21:01 2014
@@ -29,6 +29,7 @@
   <link href='http://cxf.apache.org/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet' type='text/css' />
   <script src='http://cxf.apache.org/resources/highlighter/scripts/shCore.js' type='text/javascript'></script>
   <script src='http://cxf.apache.org/resources/highlighter/scripts/shBrushJava.js' type='text/javascript'></script>
+  <script src='http://cxf.apache.org/resources/highlighter/scripts/shBrushXml.js' type='text/javascript'></script>
   <script type="text/javascript">
   SyntaxHighlighter.defaults['toolbar'] = false;
   SyntaxHighlighter.all();
@@ -77,19 +78,8 @@ table.ScrollbarTable td.ScrollbarParent 
 table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
 table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 16px;border: none;}
 
-/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" href="hibernate-support-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/back_16.gif" width="16" height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" width="33%"><a shape="rect" href="hibernate-support-faq.html">Hibernate Support FAQ</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" width="33%"><sup><a shape="rect" href="frequently-asked-questions.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/up_16.gif" width="8" height="8"></a></sup><a shape="rect" href="frequently-asked-questions.html">Frequently Asked Questions</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a shape="rect" href="release-upgrade-faq.html">Release Upgrade FAQ</a></td><td colspan="1" rowspan="1" class="ScrollbarNextIc
 on"><a shape="rect" href="release-upgrade-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif" width="16" height="16"></a></td></tr></table></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 panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-  &lt;resource&gt;
+/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" href="hibernate-support-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/back_16.gif" width="16" height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" width="33%"><a shape="rect" href="hibernate-support-faq.html">Hibernate Support FAQ</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" width="33%"><sup><a shape="rect" href="frequently-asked-questions.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/up_16.gif" width="8" height="8"></a></sup><a shape="rect" href="frequently-asked-questions.html">Frequently Asked Questions</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a shape="rect" href="release-upgrade-faq.html">Release Upgrade FAQ</a></td><td colspan="1" rowspan="1" class="ScrollbarNextIc
 on"><a shape="rect" href="release-upgrade-faq.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif" width="16" height="16"></a></td></tr></table></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 panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[  &lt;resource&gt;
     &lt;directory&gt;src/main/resources&lt;/directory&gt;
     &lt;excludes&gt;
       &lt;exclude&gt;**/*.tml&lt;/exclude&gt;
@@ -105,10 +95,7 @@ table.ScrollbarTable td.ScrollbarNextIco
     &lt;filtering&gt;false&lt;/filtering&gt;
   &lt;/resource&gt;
 ]]></script>
-</div></div>
-
-
-<style type="text/css">/*<![CDATA[*/
+</div></div><style type="text/css">/*<![CDATA[*/
 table.ScrollbarTable  {border: none;padding: 3px;width: 100%;padding: 3px;margin: 0px;background-color: #f0f0f0}
 table.ScrollbarTable td.ScrollbarPrevIcon {text-align: center;width: 16px;border: none;}
 table.ScrollbarTable td.ScrollbarPrevName {text-align: left;border: none;}