Modified: websites/production/tapestry/content/release-notes-53.html
==============================================================================
--- websites/production/tapestry/content/release-notes-53.html (original)
+++ websites/production/tapestry/content/release-notes-53.html Mon Feb 19 
19:21:08 2018
@@ -77,14 +77,14 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p>This is the consolidated list 
of changes between Tapestry versions 5.2 and 5.3. To upgrade from 5.2 to 5.3, 
most users who are not using deprecated features will be able to just update 
the Maven dependency in their POM file (or <a  
href="release-notes-53.html">download</a> the new JAR file) and the new version 
will just work. However, please read carefully below before upgrading, and also 
review the <a  href="release-notes-53.html">Release Notes 5.3</a> 
instructions.</p><p><strong>Contents</strong></p><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1518405666726 {padding: 0px;}
-div.rbtoc1518405666726 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1518405666726 li {margin-left: 0px;padding-left: 0px;}
+                <div id="ConfluenceContent"><p>This is the consolidated list 
of changes between Tapestry versions 5.2 and 5.3. To upgrade from 5.2 to 5.3, 
most users who are not using deprecated features will be able to just update 
the Maven dependency in their POM file (or <a  
href="release-notes-53.html">download</a> the new JAR file) and the new version 
will just work. However, please read carefully below before upgrading, and also 
review the&#160;<a  href="how-to-upgrade.html">How to Upgrade</a> 
instructions.</p><p><strong>Contents</strong></p><p><style 
type="text/css">/*<![CDATA[*/
+div.rbtoc1519068041406 {padding: 0px;}
+div.rbtoc1519068041406 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1519068041406 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1518405666726">
+/*]]>*/</style></p><div class="toc-macro rbtoc1519068041406">
 <ul class="toc-indentation"><li><a  
href="#ReleaseNotes5.3-BreakingChanges">Breaking Changes</a></li><li><a  
href="#ReleaseNotes5.3-NewFeatures">New Features</a></li><li><a  
href="#ReleaseNotes5.3-Sub-tasksCompleted">Sub-tasks Completed</a></li><li><a  
href="#ReleaseNotes5.3-BugsFixed">Bugs Fixed</a></li><li><a  
href="#ReleaseNotes5.3-ImprovementsMade">Improvements Made</a></li><li><a  
href="#ReleaseNotes5.3-NewFeaturesImplemented">New Features 
Implemented</a></li><li><a  href="#ReleaseNotes5.3-TasksCompleted">Tasks 
Completed</a></li></ul>
-</div><h2 id="ReleaseNotes5.3-BreakingChanges">Breaking 
Changes</h2><p>Tapestry now depends on Servlet API version <strong>2.5</strong> 
(prior releases worked with 2.4).</p><p>Tapestry no longer supports the ability 
to inject the component id into a String field. This was rarely (if ever) used 
functionality that caused unwanted conflicts elsewhere. When a component needs 
to know its component id, it may inject the <a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/ComponentResources.html";>ComponentResources</a>
 object, and invoke <code>getCompleteId()</code>.</p><p>Tapestry templates 
without a &lt;!DOCTYPE&gt; are treated a bit differently in Tapestry 5.3; they 
are treated as if they have the HTML5 doctype (<code>&lt;!DOCTYPE 
html&gt;</code>). See further notes about <a  
href="release-notes-53.html">component templates</a>.</p><p>Many classes and 
interfaces that were deprecated in prior releases of Tapestry have been removed 
in Tapestry 5.3. 
 See <a  class="external-link" 
href="https://issues.apache.org/jira/browse/TAP5-1432";>the full list</a>. As 
always, you should use your IDE to find and replace all deprecated items 
<em>before</em> you upgrade. The following are the most significant of 
these:</p><ul><li>@IncludeJavaScriptLibrary and @IncludeStylesheet annotations 
(replaced by @<a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/annotations/Import.html";>Import</a>)</li><li>@ApplicationState
 annotation (replaced with @<a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/annotations/SessionState.html";>SessionState</a>)</li><li>"validateForm"
 event triggered by Form component (replaced with "validate" 
event)</li><li>Code and constants related to page pooling</li></ul><p>In 
addition, some of the abstract base classes used with the tapestry-func library 
have changed into interfaces; you will want to recompile, but may also need to 
adjust your cod
 e, depending on your compiler settings and use of the standard Java @Override 
annotation.</p><p>Because of the upgrade to Prototype 1.7, existing JavaScript 
that uses <code>value.toJSON()</code> may break; replace with 
<code>Object.toJSON(value)</code>.</p><p>Some number of interfaces and APIs in 
Tapestry 5.3 will be removed in Tapestry 5.4 or later. These 
include:</p><ul><li>The <a  class="external-link" 
href="http://tapestry.apache.org/5.2/apidocs/org/apache/tapestry5/RenderSupport.html";>RenderSupport</a>
 environmental (replaced with the <a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/javascript/JavaScriptSupport.html";>JavaScriptSupport</a>
 environmental)</li><li>The <a  class="external-link" 
href="http://tapestry.apache.org/5.2/apidocs/org/apache/tapestry5/ajax/MultiZoneUpdate.html";>MultiZoneUpdate</a>
 object, replaced with <a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/ajax
 /AjaxResponseRenderer.html">AjaxResponseRenderer</a></li><li>ClassFactory 
service and ClassFab interface (replaced with the <a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/ioc/services/PlasticProxyFactory.html";>PlasticProxyFactory</a>
 service and <a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/plastic/PlasticClass.html";>PlasticClass</a>
 interface)</li><li>The "suppress redirects" functionality, which allows 
component event requests to respond directly with HTML, as in Tapestry 
4.</li></ul><h2 id="ReleaseNotes5.3-NewFeatures">New Features</h2><h3 
id="ReleaseNotes5.3-Underscore.js">Underscore.js</h3><p>Tapestry now bundles <a 
 class="external-link" href="http://documentcloud.github.com/underscore/"; 
rel="nofollow">Underscore.js</a>, a useful library for expressive functional 
programming in the browser. It is used in <em>no conflict mode</em>, made 
available as the <code>T5._</code> object.</p><h3 id
 ="ReleaseNotes5.3-UserAlerts">User Alerts</h3><p>Tapestry now has a central 
mechanism for handling user alerts; this includes the AlertManager service and 
the Alerts component. Just add an Alerts component to your application's 
standard layout component and Tapestry takes care of the rest. Alerts can be 
added during both traditional and Ajax requests, and may be transient 
(displayed for a few seconds), normal, or sticky (persist until the user 
expressly dismisses them). Alerts support three severities: info, warn(ing) and 
error; the look and feel can be customized by overriding Tapestry's default CSS 
rules.</p><h3 id="ReleaseNotes5.3-Renderingcomments">Rendering 
comments</h3><p>It is now possible to have Tapestry emit rendering comments; 
these are comments (such as <code>&lt;!--BEGIN Index:loop (context:Index.tml, 
line 15)--&gt;</code>) that can assist you in debugging markup output on the 
client-side. This is enabled for all requests using the configuration symbol 
<code>tapestry.co
 mponent-render-tracing-enabled</code>, and can be added to any request by 
adding the query parameter <code>t:component-trace=true</code> to the URL. This 
will significantly increase the size of the rendered markup, but can be very 
helpful with complex layouts to determine which component was responsible for 
which portion of the rendered page.</p><h3 
id="ReleaseNotes5.3-Adaptableservicecontributions">Adaptable service 
contributions</h3><p>When making contributions to a service, you are no longer 
restricted to contributing a value that is assignable to the type associated 
with the configuration; objects of any type may be contributed, and the 
TypeCoercer service is used to coerce the value to the configuration's 
type.</p><h3 id="ReleaseNotes5.3-Componentdebuggingimprovements">Component 
debugging improvements</h3><p>Because of how Tapestry instruments your pages 
and components, using a debugger has been difficult with Tapestry page and 
component classes; any mutable field shows its def
 ault value in the debugger, regardless of what has been written to the field 
or read out of it. In Tapestry 5.3, when in <em>development mode</em>, Tapestry 
now shadows values read from or written to such fields into the fields 
themselves (this has also been fixed in the 5.2.5 maintenance release). This 
shadowing does not occur in production, to avoid potential memory leaks.</p><h3 
id="ReleaseNotes5.3-Reloadingdisabledinproduction">Reloading disabled in 
production</h3><p>Tapestry no longer checks for changes to Tapestry component 
class files, templates, or message catalogs in production mode. It is assumed 
that Tapestry applications are packaged as WAR files in production, and that 
changing the WAR file causes the servlet container to redeploy the entire 
application. This change is to improve throughput and reduce memory consumption 
in production applications.</p><h3 
id="ReleaseNotes5.3-String-to-Enumcoercions">String-to-Enum 
coercions</h3><p>The TypeCoercer service now automaticall
 y generates String-to-Enum coercions without requiring a specific 
contribution. This coercion is case insensitive. A contribution is still 
allowed, and will take priority over the default coercion, but is only 
necessary to support "aliases" for enum values outside those defined by the 
enum type itself.</p><h3 
id="ReleaseNotes5.3-JavaScriptandCSSminimization">JavaScript and CSS 
minimization</h3><p>A new optional library, tapestry-yuicompressor, has been 
added. This library adds support for compressing JavaScript libraries and CSS 
files using <a  class="external-link" 
href="http://developer.yahoo.com/yui/compressor/"; rel="nofollow">the 
YUICompressor library</a>.</p><h3 
id="ReleaseNotes5.3-ComponentClassTransformWorkerService">ComponentClassTransformWorker
 Service</h3><p>The type of this service has changed from <a  
class="external-link" 
href="http://tapestry.apache.org/5.2/apidocs/org/apache/tapestry5/services/ComponentClassTransformWorker.html";>ComponentClassTransformWorker</a>
 to <a
   class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/transform/ComponentClassTransformWorker2.html";>ComponentClassTransformWorker2</a>.
 Contributions of type ComponentClassTransformWorker will automatically be 
coerced to the new ComponentClassTransformWorker2 interface. However, if you 
use the @Contribute annotation to mark the method that makes contributions, you 
will need to update the annotation to indicate the new service interface. If 
you followed the naming convention, and named your method 
<code>contributeComponentClassTransformWorker()</code>, you don't need to 
change anything.</p><h3 
id="ReleaseNotes5.3-AjaxResponseRenderer">AjaxResponseRenderer</h3><p>The <a  
class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/ajax/AjaxResponseRenderer.html";>AjaxResponseRenderer</a>
 service makes it easier to customize the partial page response generated when 
updating a <a  class="external-link" href
 
="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/corelib/components/Zone.html";>Zone</a>
 component, replacing the <a  class="external-link" 
href="http://tapestry.apache.org/5.2/apidocs/org/apache/tapestry5/ajax/MultiZoneUpdate.html";>MultiZoneUpdate</a>
 object as an event handler method return value.</p><h3 
id="ReleaseNotes5.3-TapestryJavaDoc">Tapestry JavaDoc</h3><p>Tapestry now 
includes a new library, tapestry-javadoc, that replaces the old Maven-based 
component report. Simply by placing a <code>@tapestrydoc</code> annotation into 
your component's JavaDoc, Tapestry will generate complete documentation as part 
of JavaDoc ... no more switching back and forth between JavaDoc and the 
Maven-generated component report, and no more reliance on Maven for component 
documentation.</p><h3 id="ReleaseNotes5.3-Skinning/ThemingSupport">Skinning / 
Theming Support</h3><p>Tapestry now adds the ability to skin and/or theme your 
pages and components. Its an extension of how Tapestry manag
 es pages per locale, but adds new application-defined <em>axes</em> along with 
rules to find the resources. See <a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/pageload/ComponentResourceSelector.html";>ComponentResourceSelector</a>
 and <a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/pageload/ComponentRequestSelectorAnalyzer.html";>ComponentRequestSelectorAnalyzer</a>.</p><p>There's
 also a new <a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/corelib/components/Dynamic.html";>Dynamic</a>
 component, which uses an external template, not a Tapestry template, which can 
be selected at runtime.</p><h3 id="ReleaseNotes5.3-TreeComponent">Tree 
Component</h3><p>Tapestry finally has a proper <a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/corelib/components/Tree.html";>Tree</a>
 component for navigating hierarc
 hical data. It's efficient and Ajax-enabled, and fully customizable.</p><h3 
id="ReleaseNotes5.3-FormCancelledEvent">Form Cancelled Event</h3><p>Form 
components now recognize when the client-side form was cancelled. A new 
"cancelled" event is triggered early in the submission process, which allows 
the page to bypass all property updates and input validations, when 
desired.</p><h3 
id="ReleaseNotes5.3-ImplicitOrderedConfigurationConstraints">Implicit 
OrderedConfiguration Constraints</h3><p>When using <a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/ioc/OrderedConfiguration.html";>OrderedConfiguration.add()</a>
 with no constraints, Tapestry will now implicitly order the added element 
after the previously added element, within the same method. In prior releases, 
such elements were added with no constraints. This makes it easier to 
contribute a group of related items with an implicit ordering.</p><h3 
id="ReleaseNotes5.3-NewComponentClassValidation
 s">New Component Class Validations</h3><p>Tapestry includes new validations of 
component classes to help cut down on many common errors; Tapestry now checks 
that component ids referenced by an event handler method (the 
<code>From</code><em>component id</em> part of the method name) actually 
matches a component defined in the template ... this quickly identifies typos 
in method names. This check can be disabled with a configuration symbol, as 
existing 5.2 apps may have such errors and still operate (that is, they may 
have <em>dead</em> event handler methods that will never be invoked).</p><h3 
id="ReleaseNotes5.3-ApplicationFolder">Application Folder</h3><p>Tapestry can 
now be configured to execute inside a folder, which can be useful when running 
Tapestry inside a web application that contains other servlets or filters, as a 
way to prevent conflicts.</p><h3 
id="ReleaseNotes5.3-ImprovedQuickstartArchetype">Improved Quickstart 
Archetype</h3><p>The Maven quickstart archetype has been br
 ought up to date, and now demonstrates several new bits of common useful 
functionality. It also generates support for <a  class="external-link" 
href="http://gradle.org/"; rel="nofollow">Gradle</a> as the build tool.</p><h3 
id="ReleaseNotes5.3-WhitelistedPages">Whitelisted Pages</h3><p>The new @<a  
class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/annotations/WhitelistAccessOnly.html";>WhitelistAccessOnly</a>
 annotation marks a page as accessible only from white-listed clients; the 
rules for the whitelist are <a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/security/ClientWhitelist.html";>extensible</a>.
 The default rule is that only access from localhost is on the white-list. Use 
this annotation on pages that may expose sensitive data, such as built-in 
application dashboards and the like.</p><h3 
id="ReleaseNotes5.3-PageCatalog">Page Catalog</h3><p>Tapestry applications now 
include a built-in "Page
 Catalog" page, which lists all the loaded pages of the application, with 
details about construction time and number of components. The page requires 
whitelist access (see above comment), and some functionality is only available 
in development mode. PageCatalog can be used to load all pages of your 
application, which is useful to quickly spot problems in your pages ... 
especially useful when upgrading from a prior release of Tapestry.</p><h3 
id="ReleaseNotes5.3-Client-SideJavaScriptLogging">Client-Side JavaScript 
Logging</h3><p>The integrated Blackbird client-side console has been removed. 
In its place are the floating console messages combined with logging to the 
Firebug or WebKit console. Tapestry no longer captures JavaScript 
initialization exceptions, so that they may be properly reported to the native 
console. These changes should make debugging client-side JavaScript much 
easier.</p><p>In addition, Tapestry will now display a pop-up window containing 
the full exception report f
 or a server-side error that occurs during an Ajax request, which makes 
debugging server-side problems that occur as part of an Ajax request 
<em>significantly</em> easier. Note that this logic is tied to performing a <a  
class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/corelib/components/Zone.html";>Zone</a>
 update.</p><h2 id="ReleaseNotes5.3-Sub-tasksCompleted">Sub-tasks 
Completed</h2><p>&#160;</p><ul><li>[<a  
href="https://issues.apache.org/jira/browse/TAP5-1433";>TAP5-1433</a>] -         
Remove deprecated methods of PerthreadManager service
+</div><h2 id="ReleaseNotes5.3-BreakingChanges">Breaking 
Changes</h2><p>Tapestry now depends on Servlet API version <strong>2.5</strong> 
(prior releases worked with 2.4).</p><p>Tapestry no longer supports the ability 
to inject the component id into a String field. This was rarely (if ever) used 
functionality that caused unwanted conflicts elsewhere. When a component needs 
to know its component id, it may inject the <a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/ComponentResources.html";>ComponentResources</a>
 object, and invoke <code>getCompleteId()</code>.</p><p>Tapestry templates 
without a &lt;!DOCTYPE&gt; are treated a bit differently in Tapestry 5.3; they 
are treated as if they have the HTML5 doctype (<code>&lt;!DOCTYPE 
html&gt;</code>). See further notes about <a  
href="component-templates.html">component templates</a>.</p><p>Many classes and 
interfaces that were deprecated in prior releases of Tapestry have been removed 
in Tapestry 5.
 3. See <a  class="external-link" 
href="https://issues.apache.org/jira/browse/TAP5-1432";>the full list</a>. As 
always, you should use your IDE to find and replace all deprecated items 
<em>before</em> you upgrade. The following are the most significant of 
these:</p><ul><li>@IncludeJavaScriptLibrary and @IncludeStylesheet annotations 
(replaced by @<a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/annotations/Import.html";>Import</a>)</li><li>@ApplicationState
 annotation (replaced with @<a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/annotations/SessionState.html";>SessionState</a>)</li><li>"validateForm"
 event triggered by Form component (replaced with "validate" 
event)</li><li>Code and constants related to page pooling</li></ul><p>In 
addition, some of the abstract base classes used with the tapestry-func library 
have changed into interfaces; you will want to recompile, but may also need to 
adjust your 
 code, depending on your compiler settings and use of the standard Java 
@Override annotation.</p><p>Because of the upgrade to Prototype 1.7, existing 
JavaScript that uses <code>value.toJSON()</code> may break; replace with 
<code>Object.toJSON(value)</code>.</p><p>Some number of interfaces and APIs in 
Tapestry 5.3 will be removed in Tapestry 5.4 or later. These 
include:</p><ul><li>The <a  class="external-link" 
href="http://tapestry.apache.org/5.2/apidocs/org/apache/tapestry5/RenderSupport.html";>RenderSupport</a>
 environmental (replaced with the <a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/javascript/JavaScriptSupport.html";>JavaScriptSupport</a>
 environmental)</li><li>The <a  class="external-link" 
href="http://tapestry.apache.org/5.2/apidocs/org/apache/tapestry5/ajax/MultiZoneUpdate.html";>MultiZoneUpdate</a>
 object, replaced with <a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/a
 jax/AjaxResponseRenderer.html">AjaxResponseRenderer</a></li><li>ClassFactory 
service and ClassFab interface (replaced with the <a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/ioc/services/PlasticProxyFactory.html";>PlasticProxyFactory</a>
 service and <a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/plastic/PlasticClass.html";>PlasticClass</a>
 interface)</li><li>The "suppress redirects" functionality, which allows 
component event requests to respond directly with HTML, as in Tapestry 
4.</li></ul><h2 id="ReleaseNotes5.3-NewFeatures">New Features</h2><h3 
id="ReleaseNotes5.3-Underscore.js">Underscore.js</h3><p>Tapestry now bundles <a 
 class="external-link" href="http://underscorejs.org/"; 
rel="nofollow">Underscore.js</a>, a useful library for expressive functional 
programming in the browser. It is used in <em>no conflict mode</em>, made 
available as the <code>T5._</code> object.</p><h3 id="ReleaseNotes5.
 3-UserAlerts">User Alerts</h3><p>Tapestry now has a central mechanism for 
handling user alerts; this includes the AlertManager service and the Alerts 
component. Just add an Alerts component to your application's standard layout 
component and Tapestry takes care of the rest. Alerts can be added during both 
traditional and Ajax requests, and may be transient (displayed for a few 
seconds), normal, or sticky (persist until the user expressly dismisses them). 
Alerts support three severities: info, warn(ing) and error; the look and feel 
can be customized by overriding Tapestry's default CSS rules.</p><h3 
id="ReleaseNotes5.3-Renderingcomments">Rendering comments</h3><p>It is now 
possible to have Tapestry emit rendering comments; these are comments (such as 
<code>&lt;!--BEGIN Index:loop (context:Index.tml, line 15)--&gt;</code>) that 
can assist you in debugging markup output on the client-side. This is enabled 
for all requests using the configuration symbol 
<code>tapestry.component-render-t
 racing-enabled</code>, and can be added to any request by adding the query 
parameter <code>t:component-trace=true</code> to the URL. This will 
significantly increase the size of the rendered markup, but can be very helpful 
with complex layouts to determine which component was responsible for which 
portion of the rendered page.</p><h3 
id="ReleaseNotes5.3-Adaptableservicecontributions">Adaptable service 
contributions</h3><p>When making contributions to a service, you are no longer 
restricted to contributing a value that is assignable to the type associated 
with the configuration; objects of any type may be contributed, and the 
TypeCoercer service is used to coerce the value to the configuration's 
type.</p><h3 id="ReleaseNotes5.3-Componentdebuggingimprovements">Component 
debugging improvements</h3><p>Because of how Tapestry instruments your pages 
and components, using a debugger has been difficult with Tapestry page and 
component classes; any mutable field shows its default value in th
 e debugger, regardless of what has been written to the field or read out of 
it. In Tapestry 5.3, when in <em>development mode</em>, Tapestry now shadows 
values read from or written to such fields into the fields themselves (this has 
also been fixed in the 5.2.5 maintenance release). This shadowing does not 
occur in production, to avoid potential memory leaks.</p><h3 
id="ReleaseNotes5.3-Reloadingdisabledinproduction">Reloading disabled in 
production</h3><p>Tapestry no longer checks for changes to Tapestry component 
class files, templates, or message catalogs in production mode. It is assumed 
that Tapestry applications are packaged as WAR files in production, and that 
changing the WAR file causes the servlet container to redeploy the entire 
application. This change is to improve throughput and reduce memory consumption 
in production applications.</p><h3 
id="ReleaseNotes5.3-String-to-Enumcoercions">String-to-Enum 
coercions</h3><p>The TypeCoercer service now automatically generates Stri
 ng-to-Enum coercions without requiring a specific contribution. This coercion 
is case insensitive. A contribution is still allowed, and will take priority 
over the default coercion, but is only necessary to support "aliases" for enum 
values outside those defined by the enum type itself.</p><h3 
id="ReleaseNotes5.3-JavaScriptandCSSminimization">JavaScript and CSS 
minimization</h3><p>A new optional library, tapestry-yuicompressor, has been 
added. This library adds support for compressing JavaScript libraries and CSS 
files using <a  class="external-link" 
href="http://developer.yahoo.com/yui/compressor/"; rel="nofollow">the 
YUICompressor library</a>.</p><h3 
id="ReleaseNotes5.3-ComponentClassTransformWorkerService">ComponentClassTransformWorker
 Service</h3><p>The type of this service has changed from <a  
class="external-link" 
href="http://tapestry.apache.org/5.2/apidocs/org/apache/tapestry5/services/ComponentClassTransformWorker.html";>ComponentClassTransformWorker</a>
 to <a  class="externa
 l-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/transform/ComponentClassTransformWorker2.html";>ComponentClassTransformWorker2</a>.
 Contributions of type ComponentClassTransformWorker will automatically be 
coerced to the new ComponentClassTransformWorker2 interface. However, if you 
use the @Contribute annotation to mark the method that makes contributions, you 
will need to update the annotation to indicate the new service interface. If 
you followed the naming convention, and named your method 
<code>contributeComponentClassTransformWorker()</code>, you don't need to 
change anything.</p><h3 
id="ReleaseNotes5.3-AjaxResponseRenderer">AjaxResponseRenderer</h3><p>The <a  
class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/ajax/AjaxResponseRenderer.html";>AjaxResponseRenderer</a>
 service makes it easier to customize the partial page response generated when 
updating a <a  class="external-link" href="http://tapestr
 
y.apache.org/5.3/apidocs/org/apache/tapestry5/corelib/components/Zone.html">Zone</a>
 component, replacing the <a  class="external-link" 
href="http://tapestry.apache.org/5.2/apidocs/org/apache/tapestry5/ajax/MultiZoneUpdate.html";>MultiZoneUpdate</a>
 object as an event handler method return value.</p><h3 
id="ReleaseNotes5.3-TapestryJavaDoc">Tapestry JavaDoc</h3><p>Tapestry now 
includes a new library, tapestry-javadoc, that replaces the old Maven-based 
component report. Simply by placing a <code>@tapestrydoc</code> annotation into 
your component's JavaDoc, Tapestry will generate complete documentation as part 
of JavaDoc ... no more switching back and forth between JavaDoc and the 
Maven-generated component report, and no more reliance on Maven for component 
documentation.</p><h3 id="ReleaseNotes5.3-Skinning/ThemingSupport">Skinning / 
Theming Support</h3><p>Tapestry now adds the ability to skin and/or theme your 
pages and components. Its an extension of how Tapestry manages pages per loc
 ale, but adds new application-defined <em>axes</em> along with rules to find 
the resources. See <a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/pageload/ComponentResourceSelector.html";>ComponentResourceSelector</a>
 and <a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/pageload/ComponentRequestSelectorAnalyzer.html";>ComponentRequestSelectorAnalyzer</a>.</p><p>There's
 also a new <a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/corelib/components/Dynamic.html";>Dynamic</a>
 component, which uses an external template, not a Tapestry template, which can 
be selected at runtime.</p><h3 id="ReleaseNotes5.3-TreeComponent">Tree 
Component</h3><p>Tapestry finally has a proper <a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/corelib/components/Tree.html";>Tree</a>
 component for navigating hierarchical data. It's
  efficient and Ajax-enabled, and fully customizable.</p><h3 
id="ReleaseNotes5.3-FormCancelledEvent">Form Cancelled Event</h3><p>Form 
components now recognize when the client-side form was cancelled. A new 
"cancelled" event is triggered early in the submission process, which allows 
the page to bypass all property updates and input validations, when 
desired.</p><h3 
id="ReleaseNotes5.3-ImplicitOrderedConfigurationConstraints">Implicit 
OrderedConfiguration Constraints</h3><p>When using <a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/ioc/OrderedConfiguration.html";>OrderedConfiguration.add()</a>
 with no constraints, Tapestry will now implicitly order the added element 
after the previously added element, within the same method. In prior releases, 
such elements were added with no constraints. This makes it easier to 
contribute a group of related items with an implicit ordering.</p><h3 
id="ReleaseNotes5.3-NewComponentClassValidations">New Component
  Class Validations</h3><p>Tapestry includes new validations of component 
classes to help cut down on many common errors; Tapestry now checks that 
component ids referenced by an event handler method (the 
<code>From</code><em>component id</em> part of the method name) actually 
matches a component defined in the template ... this quickly identifies typos 
in method names. This check can be disabled with a configuration symbol, as 
existing 5.2 apps may have such errors and still operate (that is, they may 
have <em>dead</em> event handler methods that will never be invoked).</p><h3 
id="ReleaseNotes5.3-ApplicationFolder">Application Folder</h3><p>Tapestry can 
now be configured to execute inside a folder, which can be useful when running 
Tapestry inside a web application that contains other servlets or filters, as a 
way to prevent conflicts.</p><h3 
id="ReleaseNotes5.3-ImprovedQuickstartArchetype">Improved Quickstart 
Archetype</h3><p>The Maven quickstart archetype has been brought up to date
 , and now demonstrates several new bits of common useful functionality. It 
also generates support for <a  class="external-link" href="http://gradle.org/"; 
rel="nofollow">Gradle</a> as the build tool.</p><h3 
id="ReleaseNotes5.3-WhitelistedPages">Whitelisted Pages</h3><p>The new @<a  
class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/annotations/WhitelistAccessOnly.html";>WhitelistAccessOnly</a>
 annotation marks a page as accessible only from white-listed clients; the 
rules for the whitelist are <a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/security/ClientWhitelist.html";>extensible</a>.
 The default rule is that only access from localhost is on the white-list. Use 
this annotation on pages that may expose sensitive data, such as built-in 
application dashboards and the like.</p><h3 
id="ReleaseNotes5.3-PageCatalog">Page Catalog</h3><p>Tapestry applications now 
include a built-in "PageCatalog" page, w
 hich lists all the loaded pages of the application, with details about 
construction time and number of components. The page requires whitelist access 
(see above comment), and some functionality is only available in development 
mode. PageCatalog can be used to load all pages of your application, which is 
useful to quickly spot problems in your pages ... especially useful when 
upgrading from a prior release of Tapestry.</p><h3 
id="ReleaseNotes5.3-Client-SideJavaScriptLogging">Client-Side JavaScript 
Logging</h3><p>The integrated Blackbird client-side console has been removed. 
In its place are the floating console messages combined with logging to the 
Firebug or WebKit console. Tapestry no longer captures JavaScript 
initialization exceptions, so that they may be properly reported to the native 
console. These changes should make debugging client-side JavaScript much 
easier.</p><p>In addition, Tapestry will now display a pop-up window containing 
the full exception report for a server-side
  error that occurs during an Ajax request, which makes debugging server-side 
problems that occur as part of an Ajax request <em>significantly</em> easier. 
Note that this logic is tied to performing a <a  class="external-link" 
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/corelib/components/Zone.html";>Zone</a>
 update.</p><h2 id="ReleaseNotes5.3-Sub-tasksCompleted">Sub-tasks 
Completed</h2><p>&#160;</p><ul><li>[<a  
href="https://issues.apache.org/jira/browse/TAP5-1433";>TAP5-1433</a>] -         
Remove deprecated methods of PerthreadManager service
 </li><li>[<a  
href="https://issues.apache.org/jira/browse/TAP5-1434";>TAP5-1434</a>] -         
Remove old IOCSymbols class, and outdated constants from IOCConstants
 </li><li>[<a  
href="https://issues.apache.org/jira/browse/TAP5-1435";>TAP5-1435</a>] -         
Remove proxy-related building method from ClassFabUtils, since moved to 
ClassFactory#createProxy() 
 </li><li>[<a  
href="https://issues.apache.org/jira/browse/TAP5-1436";>TAP5-1436</a>] -         
Remove @ApplicationState annotation, replaced with @SessionState

Modified: websites/production/tapestry/content/release-notes-531.html
==============================================================================
--- websites/production/tapestry/content/release-notes-531.html (original)
+++ websites/production/tapestry/content/release-notes-531.html Mon Feb 19 
19:21:08 2018
@@ -77,7 +77,7 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p>This bugfix release is a 
drop-in replacement for the <a  href="release-notes-531.html">5.3</a> release. 
Any 5.3 user is encouraged to upgrade. Be sure to review the <a  
href="release-notes-531.html">Release Notes 5.3.1</a> instructions first, 
though.</p><p>&#160;</p><h2>        Bugs Fixed
+                <div id="ConfluenceContent"><p>This bugfix release is a 
drop-in replacement for the <a  href="release-notes-531.html">5.3</a> release. 
Any 5.3 user is encouraged to upgrade. Be sure to review the <a  
href="how-to-upgrade.html">How to Upgrade</a> instructions first, 
though.</p><p>&#160;</p><h2>        Bugs Fixed
 </h2>
 <ul><li>[<a  
href="https://issues.apache.org/jira/browse/TAP5-1762";>TAP5-1762</a>] -         
Some components do not include a description of their parameters in their 
JavaDoc pages
 </li><li>[<a  
href="https://issues.apache.org/jira/browse/TAP5-1765";>TAP5-1765</a>] -         
PerThread scope is not honored when service is created using autobuild

Modified: websites/production/tapestry/content/release-notes-532.html
==============================================================================
--- websites/production/tapestry/content/release-notes-532.html (original)
+++ websites/production/tapestry/content/release-notes-532.html Mon Feb 19 
19:21:08 2018
@@ -77,7 +77,7 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p>This is the consolidated list 
of changes between Tapestry versions 5.3.1 and 5.3.2. To upgrade, just update 
the Maven dependency in you POM file (or <a  
href="release-notes-532.html">download</a> the new JAR file) and the new 
version will just work. However, please review the <a  
href="release-notes-532.html">Release Notes 5.3.2</a> instructions before 
upgrading. And be sure to check the <a  href="release-notes-532.html">Release 
Notes for 5.3</a> and <a  href="release-notes-532.html">Release Notes for 
5.3.1</a> too.</p><h2 id="ReleaseNotes5.3.2-NewFeatures">New Features</h2><h3 
id="ReleaseNotes5.3.2-Componentfieldvisibility">Component field 
visibility</h3><p>In prior versions of Tapestry, all instance fields of 
components had to be visibility private; starting with version 5.3.2, this has 
been relaxed. Component fields may be protected, or package private (that is, 
no visibility modifier). Fields that are final, or annotated with @<a  c
 lass="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Retain.html";>Retain</a>
 may even be public. In any case, this makes it easier for pages to work with 
other pages in the same package, and for subclasses to more easily access the 
fields (including parameter fields, or injections) provided by base classes. 
This feature should be used with care, as it can lead to designs that are more 
difficult to maintain.</p><h3 id="ReleaseNotes5.3.2-Spring3.1upgrade">Spring 
3.1 upgrade</h3><p>The Spring integration module has updated the Spring 
dependencies to 3.1.0.RELEASE</p><h4 
id="ReleaseNotes5.3.2-TextFieldcomponentsupportforHTML5values">TextField 
component support for HTML5 values</h4><p>The <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/components/TextField.html";>TextField</a>
 components now support HTML5 any HTML5 type attribute.</p><p>&#160;</p><h2>    
    Bugs Fixed
+                <div id="ConfluenceContent"><p>This is the consolidated list 
of changes between Tapestry versions 5.3.1 and 5.3.2. To upgrade, just update 
the Maven dependency in you POM file (or <a  href="download.html">download</a> 
the new JAR file) and the new version will just work. However, please review 
the&#160;<a  href="how-to-upgrade.html">How to Upgrade</a> instructions before 
upgrading. And be sure to check the <a  href="release-notes-53.html">Release 
Notes for 5.3</a> and <a  href="release-notes-531.html">Release Notes for 
5.3.1</a> too.</p><h2 id="ReleaseNotes5.3.2-NewFeatures">New Features</h2><h3 
id="ReleaseNotes5.3.2-Componentfieldvisibility">Component field 
visibility</h3><p>In prior versions of Tapestry, all instance fields of 
components had to be visibility private; starting with version 5.3.2, this has 
been relaxed. Component fields may be protected, or package private (that is, 
no visibility modifier). Fields that are final, or annotated with @<a  
class="externa
 l-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Retain.html";>Retain</a>
 may even be public. In any case, this makes it easier for pages to work with 
other pages in the same package, and for subclasses to more easily access the 
fields (including parameter fields, or injections) provided by base classes. 
This feature should be used with care, as it can lead to designs that are more 
difficult to maintain.</p><h3 id="ReleaseNotes5.3.2-Spring3.1upgrade">Spring 
3.1 upgrade</h3><p>The Spring integration module has updated the Spring 
dependencies to 3.1.0.RELEASE</p><h3 
id="ReleaseNotes5.3.2-TextFieldcomponentsupportforHTML5values">TextField 
component support for HTML5 values</h3><p>The <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/components/TextField.html";>TextField</a>
 components now support HTML5 any HTML5 type attribute.</p><p>&#160;</p><h2>    
    Bugs Fixed
 </h2>
 <ul><li>[<a  
href="https://issues.apache.org/jira/browse/TAP5-1787";>TAP5-1787</a>] -         
TextField should be usable with HTML5 type values (such as "number", "email", 
etc.)
 </li><li>[<a  
href="https://issues.apache.org/jira/browse/TAP5-1788";>TAP5-1788</a>] -         
Service id 'environment' has already been defined by 
org.apache.tapestry5.services.TapestryModule with Spring 3.1

Modified: websites/production/tapestry/content/release-notes-533.html
==============================================================================
--- websites/production/tapestry/content/release-notes-533.html (original)
+++ websites/production/tapestry/content/release-notes-533.html Mon Feb 19 
19:21:08 2018
@@ -77,7 +77,7 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p>This is the consolidated list 
of changes between Tapestry versions 5.3.2 and 5.3.3. Tapestry 5.3.3 is a 
drop-in replacement for prior Tapestry 5.3 releases. To upgrade, just update 
the Maven dependency in you POM file (or <a  
href="release-notes-533.html">download</a> the new JAR file) and the new 
version will just work. However, please review the <a  
href="release-notes-533.html">Release Notes 5.3.3</a> instructions before 
upgrading.</p><p>This is a very modest bug fix release, but it does straighten 
out a significant problem with Java component classes containing non-private 
fields.</p><p>For those developers not using Maven or Gradle, you'll be pleased 
to know that this release now includes the option of a binary download 
containing Tapestry's modules and main dependencies. More details are on the <a 
 href="release-notes-533.html">Release Notes 5.3.3</a> page.</p><p>&#160;       
          
+                <div id="ConfluenceContent"><p class="confluence-link">This is 
the consolidated list of changes between Tapestry versions 5.3.2 and 5.3.3. 
Tapestry 5.3.3 is a drop-in replacement for prior Tapestry 5.3 releases. To 
upgrade, just update the Maven dependency in you POM file (or <a  
href="download.html">download</a> the new JAR file) and the new version will 
just work. However, please review the <a  href="how-to-upgrade.html">How to 
Upgrade</a> instructions before upgrading.</p><p>This is a very modest bug fix 
release, but it does straighten out a significant problem with Java component 
classes containing non-private fields.</p><p class="confluence-link">For those 
developers not using Maven or Gradle, you'll be pleased to know that this 
release now includes the option of a binary download containing Tapestry's 
modules and main dependencies. More details are on the <a  
href="download.html">Download</a>&#160; page.</p><p>&#160;                 
 </p><h2>        Bugs Fixed
 </h2>
 <ul><li>[<a  
href="https://issues.apache.org/jira/browse/TAP5-1791";>TAP5-1791</a>] -         
On some JDKs, the complex regular expression used by 
ComponentEventLinkEncoderImpl will cause a stack overflow

Modified: websites/production/tapestry/content/release-notes-534.html
==============================================================================
--- websites/production/tapestry/content/release-notes-534.html (original)
+++ websites/production/tapestry/content/release-notes-534.html Mon Feb 19 
19:21:08 2018
@@ -77,7 +77,7 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p>This is the consolidated list 
of changes between Tapestry versions 5.3.3 and 5.3.4. Tapestry 5.3.4 is a 
drop-in replacement for prior Tapestry 5.3 releases. To upgrade, just update 
the Maven dependency in you POM file (or <a  
href="release-notes-534.html">download</a> the new JAR file) and the new 
version will just work. However, please review the <a  
href="release-notes-534.html">Release Notes 5.3.4</a> instructions before 
upgrading.</p><p>This is a very modest bug fix release, including a number of 
minor performance improvements.</p><p>For those developers not using Maven or 
Gradle, you'll be pleased that we now offer the option of a binary download 
containing Tapestry's modules and main dependencies. More details are on the <a 
 href="release-notes-534.html">Release Notes 5.3.4</a> 
page.</p><p>&#160;</p><h2>        Bugs Fixed
+                <div id="ConfluenceContent"><p>This is the consolidated list 
of changes between Tapestry versions 5.3.3 and 5.3.4. Tapestry 5.3.4 is a 
drop-in replacement for prior Tapestry 5.3 releases. To upgrade, just update 
the Maven dependency in you POM file (or <a  href="download.html">download</a> 
the new JAR file) and the new version will just work. However, please review 
the&#160;<a  href="how-to-upgrade.html">How to Upgrade</a> instructions before 
upgrading.</p><p>This is a very modest bug fix release, including a number of 
minor performance improvements.</p><p class="confluence-link">For those 
developers not using Maven or Gradle, you'll be pleased that we now offer the 
option of a binary download containing Tapestry's modules and main 
dependencies. More details are on the&#160;<a  
href="download.html">Download</a> page.</p><p>&#160;</p><h2>        Bugs Fixed
 </h2>
 <ul><li>[<a  
href="https://issues.apache.org/jira/browse/TAP5-1729";>TAP5-1729</a>] -         
Sometimes YUICompressor can fail with java.util.EmptyStackException
 </li><li>[<a  
href="https://issues.apache.org/jira/browse/TAP5-1848";>TAP5-1848</a>] -         
tapestry-jpa ignores persistence provider from persistence.xml

Modified: websites/production/tapestry/content/release-notes-535.html
==============================================================================
--- websites/production/tapestry/content/release-notes-535.html (original)
+++ websites/production/tapestry/content/release-notes-535.html Mon Feb 19 
19:21:08 2018
@@ -77,7 +77,7 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p>This is the consolidated list 
of changes between Tapestry included in version 5.3.5. Tapestry 5.3.5 is a 
drop-in replacement for prior Tapestry 5.3 releases. To upgrade, just update 
the Maven dependency in you POM file (or <a  
href="release-notes-535.html">download</a> the new JAR file) and the new 
version will just work. However, please review the <a  
href="release-notes-535.html">Release Notes 5.3.5</a> instructions before 
upgrading.</p><p>This is a very modest bug fix release, including a number of 
minor performance improvements. Importantly, the bundled version of <a  
class="external-link" href="http://prototypejs.org/2012/8/8/prototype-1-7-1"; 
rel="nofollow">Prototype</a> is now 1.7.1, which includes some significant 
improvements and bug fixes that target Internet Explorer. However, the 
prototype change <em>may</em> affect the functionality of the Tapestry 
DateField component under some versions of Internet Explorer (this issue was 
 discovered late in the voting process).</p><p>For those developers not using 
Maven or Gradle, you'll be pleased that we now offer the option of a binary 
download containing Tapestry's modules and main dependencies. More details are 
on the <a  href="release-notes-535.html">Release Notes 5.3.5</a> 
page.</p><p>&#160;             
+                <div id="ConfluenceContent"><p>This is the consolidated list 
of changes between Tapestry included in version 5.3.5. Tapestry 5.3.5 is a 
drop-in replacement for prior Tapestry 5.3 releases. To upgrade, just update 
the Maven dependency in you POM file (or <a  href="download.html">download</a> 
the new JAR file) and the new version will just work. However, please review 
the&#160;<a  href="how-to-upgrade.html">How to Upgrade</a> instructions before 
upgrading.</p><p>This is a very modest bug fix release, including a number of 
minor performance improvements. Importantly, the bundled version of <a  
class="external-link" href="http://prototypejs.org/"; 
rel="nofollow">Prototype</a> is now 1.7.1, which includes some significant 
improvements and bug fixes that target Internet Explorer. However, the 
prototype change <em>may</em> affect the functionality of the Tapestry 
DateField component under some versions of Internet Explorer (this issue was 
discovered late in the voting proces
 s).</p><p>For those developers not using Maven or Gradle, you'll be pleased 
that we now offer the option of a binary download containing Tapestry's modules 
and main dependencies. More details are on the&#160;<a  
href="download.html">Download</a> page.</p><p>&#160;             
 </p><h2>        Bugs Fixed
 </h2>
 <ul><li>[<a  
href="https://issues.apache.org/jira/browse/TAP5-1601";>TAP5-1601</a>] -         
Sometime a method that references a field with a conduit will not be 
instrumented, resulting in an NPE accessing the field itself

Modified: websites/production/tapestry/content/release-notes-536.html
==============================================================================
--- websites/production/tapestry/content/release-notes-536.html (original)
+++ websites/production/tapestry/content/release-notes-536.html Mon Feb 19 
19:21:08 2018
@@ -77,7 +77,7 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p>This is the consolidated list 
of changes between Tapestry versions 5.3.5 and 5.3.6. Tapestry 5.3.6 is a 
drop-in replacement for prior Tapestry 5.3 releases. To upgrade, just update 
the Maven dependency in your POM file (or <a  
href="release-notes-536.html">download</a> the new JAR file) and the new 
version will just work. However, please review the <a  
href="release-notes-536.html">Release Notes 5.3.6</a> instructions before 
upgrading.</p><p>This is a very modest bug fix release. Importantly, the 
bundled version of <a  class="external-link" 
href="http://prototypejs.org/2012/8/8/prototype-1-7-1"; 
rel="nofollow">Prototype</a> has been downgraded back to version 1.7, as the 
new version was causing a number of issues, especially under Internet 
Explorer.</p><p>The main improvement is security related; Tapestry will now 
integrate a <a  class="external-link" href="http://en.wikipedia.org/wiki/HMAC"; 
rel="nofollow">hash-based message authenticati
 on code</a> (HMAC) into serialized Java object data stored on the client 
(generally, this means the <code>t:formdata</code> hidden field used by the 
Form component).</p><p>When you first run your application under 5.3.6, you 
will see an alert and a console error concerning the HMAC configuration. You 
should update your application's configuration to set a unique, private value 
for the <a  href="release-notes-536.html">tapestry.hmac-passphrase</a> 
configuration symbol.</p><p>And, as with any Tapestry upgrade, be sure to 
change your <a  href="release-notes-536.html">application's version 
number</a>.</p><h2>        Bugs Fixed
+                <div id="ConfluenceContent"><p class="confluence-link">This is 
the consolidated list of changes between Tapestry versions 5.3.5 and 5.3.6. 
Tapestry 5.3.6 is a drop-in replacement for prior Tapestry 5.3 releases. To 
upgrade, just update the Maven dependency in your POM file (or <a  
href="download.html">download</a> the new JAR file) and the new version will 
just work. However, please review the&#160;<a  href="how-to-upgrade.html">How 
to Upgrade</a> instructions before upgrading.</p><p>This is a very modest bug 
fix release. Importantly, the bundled version of <a  class="external-link" 
href="http://prototypejs.org/2012/8/8/prototype-1-7-1"; 
rel="nofollow">Prototype</a> has been downgraded back to version 1.7, as the 
new version was causing a number of issues, especially under Internet 
Explorer.</p><p>The main improvement is security related; Tapestry will now 
integrate a <a  class="external-link" href="http://en.wikipedia.org/wiki/HMAC"; 
rel="nofollow">hash-based message 
 authentication code</a> (HMAC) into serialized Java object data stored on the 
client (generally, this means the <code>t:formdata</code> hidden field used by 
the Form component).</p><p>When you first run your application under 5.3.6, you 
will see an alert and a console error concerning the HMAC configuration. You 
should update your application's configuration to set a unique, private value 
for the <a  href="configuration.html">tapestry.hmac-passphrase</a> 
configuration symbol.</p><p>And, as with any Tapestry upgrade, be sure to 
change your <a  href="configuration.html">application's version 
number</a>.</p><h2>        Bugs Fixed
 </h2>
 <ul><li>[<a  
href="https://issues.apache.org/jira/browse/TAP5-986";>TAP5-986</a>] -         A 
request can fail with an NPE in some cases, when a Tapestry page is acting as 
the servlet container error page
 </li><li>[<a  
href="https://issues.apache.org/jira/browse/TAP5-1735";>TAP5-1735</a>] -         
Most packages lack package-level javadocs

Modified: websites/production/tapestry/content/release-upgrade-faq.html
==============================================================================
--- websites/production/tapestry/content/release-upgrade-faq.html (original)
+++ websites/production/tapestry/content/release-upgrade-faq.html Mon Feb 19 
19:21:08 2018
@@ -77,7 +77,14 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><h2 
id="ReleaseUpgradeFAQ-ReleaseUpgradeFAQ">Release Upgrade FAQ</h2><p>Main 
Article: <a  href="release-upgrade-faq.html">Release Upgrade FAQ</a></p><h3 
id="ReleaseUpgradeFAQ-WhydoIgetanexceptionaboutorg.apache.tapestry5.internal.services.RequestPathOptimizerafterupgradingto5.2?">Why
 do I get an exception about 
org.apache.tapestry5.internal.services.RequestPathOptimizer after upgrading to 
5.2?</h3><p>Although Tapestry works very hard to keep backwards compatibility 
between releases for <em>public</em> APIs, all <em>internal</em> APIs are 
subject to change. This error is commonly due to the use of the ChenilleKit 
library, which makes use of some internal APIs. You must also upgrade your 
ChenilleKit dependency when moving from Tapestry 5.1 to 5.2 or later. See the 
<a  class="external-link" 
href="http://tapestry.markmail.org/thread/3cj2wuvl4idnpmjr"; 
rel="nofollow">complete discussion of this from the Tapestry user mailing 
list</a>.</p></div>
+                <div id="ConfluenceContent"><h1 
id="ReleaseUpgradeFAQ-ReleaseUpgrade">Release Upgrade</h1><p>Main Article: <a  
href="release-upgrade-faq.html">Release Upgrade FAQ</a></p><h2 
id="ReleaseUpgradeFAQ-Contents">Contents</h2><p><style 
type="text/css">/*<![CDATA[*/
+div.rbtoc1519068042877 {padding: 0px;}
+div.rbtoc1519068042877 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1519068042877 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style></p><div class="toc-macro rbtoc1519068042877">
+<ul class="toc-indentation"><li><a  
href="#ReleaseUpgradeFAQ-WhydoIgetanexceptionaboutorg.apache.tapestry5.internal.services.RequestPathOptimizerafterupgradingto5.2?">Why
 do I get an exception about 
org.apache.tapestry5.internal.services.RequestPathOptimizer after upgrading to 
5.2?</a></li></ul>
+</div><h2 
id="ReleaseUpgradeFAQ-WhydoIgetanexceptionaboutorg.apache.tapestry5.internal.services.RequestPathOptimizerafterupgradingto5.2?">Why
 do I get an exception about 
org.apache.tapestry5.internal.services.RequestPathOptimizer after upgrading to 
5.2?</h2><p>Although Tapestry works very hard to keep backwards compatibility 
between releases for <em>public</em> APIs, all <em>internal</em> APIs are 
subject to change. This error is commonly due to the use of the ChenilleKit 
library, which makes use of some internal APIs. You must also upgrade your 
ChenilleKit dependency when moving from Tapestry 5.1 to 5.2 or later. See the 
<a  class="external-link" 
href="http://tapestry.markmail.org/thread/3cj2wuvl4idnpmjr"; 
rel="nofollow">complete discussion of this from the Tapestry user mailing 
list</a>.</p></div>
       </div>
 
       <div class="clearer"></div>

Modified: websites/production/tapestry/content/request-processing-faq.html
==============================================================================
--- websites/production/tapestry/content/request-processing-faq.html (original)
+++ websites/production/tapestry/content/request-processing-faq.html Mon Feb 19 
19:21:08 2018
@@ -77,13 +77,20 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><h2 
id="RequestProcessingFAQ-RequestProcessing">Request Processing</h2><h3 
id="RequestProcessingFAQ-HowdoIgetTapestrytonothandlearequest?">How do I get 
Tapestry to <strong>not</strong> handle a request?</h3><p>Often, when <a  
href="request-processing-faq.html">integrating with outside libraries, or 
working with legacy code</a>, you will want Tapestry to ignore a request and 
let the normal servlet or other processing handle the request.</p><p>The easy 
way to do this is to contribute a regular expression to the <a  
href="request-processing-faq.html">IgnoredPathsFilter service</a>, whose job is 
to exclude some requests.</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+                <div id="ConfluenceContent"><h1 
id="RequestProcessingFAQ-RequestProcessing">Request Processing</h1><h2 
id="RequestProcessingFAQ-Contents">Contents</h2><p><style 
type="text/css">/*<![CDATA[*/
+div.rbtoc1519068039004 {padding: 0px;}
+div.rbtoc1519068039004 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1519068039004 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style></p><div class="toc-macro rbtoc1519068039004">
+<ul class="toc-indentation"><li><a  
href="#RequestProcessingFAQ-HowdoIgetTapestrytonothandlearequest?">How do I get 
Tapestry to not handle a request?</a></li></ul>
+</div><h2 id="RequestProcessingFAQ-HowdoIgetTapestrytonothandlearequest?">How 
do I get Tapestry to <strong>not</strong> handle a request?</h2><p>Often, when 
<a  href="integration-with-existing-applications.html">integrating with outside 
libraries, or working with legacy code</a>, you will want Tapestry to ignore a 
request and let the normal servlet or other processing handle the 
request.</p><p>The easy way to do this is to contribute a regular expression to 
the <a  href="configuration.html">IgnoredPathsFilter service</a>, whose job is 
to exclude some requests.</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">public static void 
contributeIgnoredPathsFilter(Configuration&lt;String&gt; configuration)
   {
     configuration.add("/dwr/.*");
   }
 </pre>
-</div></div><p>Alternately, you may contribute a <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/HttpServletRequestFilter.html";>HttpServletRequestFilter</a>
 to the <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/HttpServletRequestHandler.html";>HttpServletRequestHandler</a>
 pipeline. A filter that simply returns false from its <code>service()</code> 
method will cause Tapestry to hand off the request to the servlet container for 
normal handling. You would use this approach when a simple regular expression 
is not sufficient to identify which requests should be 
ignored.</p><p>Alternately, you can configure the Tapestry application to 
execute inside a folder to avoid conflicts. See the notes on the <a  
href="request-processing-faq.html">configuration page</a>.</p></div>
+</div></div><p>Alternately, you may contribute a <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/HttpServletRequestFilter.html";>HttpServletRequestFilter</a>
 to the <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/HttpServletRequestHandler.html";>HttpServletRequestHandler</a>
 pipeline. A filter that simply returns false from its <code>service()</code> 
method will cause Tapestry to hand off the request to the servlet container for 
normal handling. You would use this approach when a simple regular expression 
is not sufficient to identify which requests should be 
ignored.</p><p>Alternately, you can configure the Tapestry application to 
execute inside a folder to avoid conflicts. See the notes on the <a  
href="configuration.html">configuration page</a>.</p></div>
       </div>
 
       <div class="clearer"></div>

Modified: websites/production/tapestry/content/security-faq.html
==============================================================================
--- websites/production/tapestry/content/security-faq.html (original)
+++ websites/production/tapestry/content/security-faq.html Mon Feb 19 19:21:08 
2018
@@ -77,7 +77,14 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><h2 
id="SecurityFAQ-SecurityFAQ">Security FAQ</h2><p>&#160;</p><div 
class="aui-label" style="float:right" title="Related Articles">
+                <div id="ConfluenceContent"><h1 
id="SecurityFAQ-Security">Security</h1><p>Main Article: <a  
href="security.html">Security</a></p><h2 
id="SecurityFAQ-Contents">Contents</h2><p><style type="text/css">/*<![CDATA[*/
+div.rbtoc1519068040585 {padding: 0px;}
+div.rbtoc1519068040585 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1519068040585 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style></p><div class="toc-macro rbtoc1519068040585">
+<ul class="toc-indentation"><li><a  
href="#SecurityFAQ-Thebuilt-inDashboardpagearevisibleinmyproductionapplicationandIdon'twantthemtobe,whatcanIdo?">The
 built-in Dashboard page are visible in my production application and I don't 
want them to be, what can I do?</a></li></ul>
+</div><p>&#160;</p><div class="aui-label" style="float:right" title="Related 
Articles">
 
 
 
@@ -119,7 +126,7 @@
 </div>
 
 
-<h3 
id="SecurityFAQ-Thebuilt-inDashboardpagearevisibleinmyproductionapplicationandIdon'twantthemtobe,whatcanIdo?">The
 built-in Dashboard page are visible in my production application and I don't 
want them to be, what can I do?</h3><p>First off all, don't panic: the <a  
href="security-faq.html">Developer Dashboard</a> page is marked with the @<a  
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/WhitelistAccessOnly.html";>WhitelistAccessOnly</a>
 annotation, which makes it invisible to clients that are not on the whitelist. 
Try accessing the page from a different workstation and you may find that the 
pages are not visible after all.</p><p>Sometimes, in production, a firewall or 
proxy may make it look like the client web browser originates from localhost; 
in that situation, you may want to disable the logic that puts localhost onto 
the whitelist. This determination is made by the contributions to the <a  
class="external-link" href="h
 
ttp://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/security/ClientWhitelist.html">ClientWhitelist</a>
 service. Tapestry makes a contribution with id "LocalhostOnly", which one of 
your modules can override:</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+<h2 
id="SecurityFAQ-Thebuilt-inDashboardpagearevisibleinmyproductionapplicationandIdon'twantthemtobe,whatcanIdo?">The
 built-in Dashboard page are visible in my production application and I don't 
want them to be, what can I do?</h2><p>First off all, don't panic: the&#160;<a  
href="development-dashboard.html">Development Dashboard</a> page is marked with 
the @<a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/WhitelistAccessOnly.html";>WhitelistAccessOnly</a>
 annotation, which makes it invisible to clients that are not on the whitelist. 
Try accessing the page from a different workstation and you may find that the 
pages are not visible after all.</p><p>Sometimes, in production, a firewall or 
proxy may make it look like the client web browser originates from localhost; 
in that situation, you may want to disable the logic that puts localhost onto 
the whitelist. This determination is made by the contributions to the <a  
class="extern
 al-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/security/ClientWhitelist.html";>ClientWhitelist</a>
 service. Tapestry makes a contribution with id "LocalhostOnly", which one of 
your modules can override:</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">  @Contribute(ClientWhitelist.class)
   public static void 
turnOffLocalhostInProduction(OrderedConfiguration&lt;WhitelistAnalyzer&gt; 
configuration, 
                                                  
@Symbol(SymbolConstants.PRODUCTION_MODE) boolean productionMode) {

Modified: websites/production/tapestry/content/specific-errors-faq.html
==============================================================================
--- websites/production/tapestry/content/specific-errors-faq.html (original)
+++ websites/production/tapestry/content/specific-errors-faq.html Mon Feb 19 
19:21:08 2018
@@ -77,7 +77,14 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><div class="aui-label" 
style="float:right" title="Related Articles">
+                <div id="ConfluenceContent"><h1 
id="SpecificErrorsFAQ-SpecificErrors">Specific Errors</h1><h2 
id="SpecificErrorsFAQ-Contents">Contents</h2><p><style 
type="text/css">/*<![CDATA[*/
+div.rbtoc1519068035112 {padding: 0px;}
+div.rbtoc1519068035112 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1519068035112 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style></p><div class="toc-macro rbtoc1519068035112">
+<ul class="toc-indentation"><li><a  
href="#SpecificErrorsFAQ-WhydoIgettheexception&quot;Noserviceimplementstheinterfaceorg.apache.tapestry5.internal.InternalComponentResources&quot;whentryingtousetheBeanEditFormcomponent?">Why
 do I get the exception "No service implements the interface 
org.apache.tapestry5.internal.InternalComponentResources" when trying to use 
the BeanEditForm component?</a></li><li><a  
href="#SpecificErrorsFAQ-Igetanerrorabout&quot;Pagedidnotgenerateanymarkupwhenrendered.&quot;butIhaveatemplate,whathappened?">I
 get an error about "Page did not generate any markup when rendered." but I 
have a template, what happened?</a></li><li><a  
href="#SpecificErrorsFAQ-MyapplicationfailswiththeerrorPermGen,howdoIfixthis?">My
 application fails with the error PermGen, how do I fix this?</a></li><li><a  
href="#SpecificErrorsFAQ-WhydoIsometimesgetajava.lang.NoSuchMethodErrorexceptionafterreloadingmypage?">Why
 do I sometimes get a java.lang.NoSuchMethodError exception after reloadi
 ng my page?</a></li><li><a  
href="#SpecificErrorsFAQ-Whydomylogscontain&quot;java.lang.RuntimeException:FormsrequirethattherequestmethodbePOSTandthatthet:formdataqueryparameterhavevalues&quot;?">Why
 do my logs contain "java.lang.RuntimeException: Forms require that the request 
method be POST and that the t:formdata query parameter have 
values"?</a></li></ul>
+</div><div class="aui-label" style="float:right" title="Related Articles">
 
 
 
@@ -119,7 +126,7 @@
 </div>
 
 
-<h3 
id="SpecificErrorsFAQ-WhydoIgettheexception&quot;Noserviceimplementstheinterfaceorg.apache.tapestry5.internal.InternalComponentResources&quot;whentryingtousetheBeanEditFormcomponent?">Why
 do I get the exception "No service implements the interface 
org.apache.tapestry5.internal.InternalComponentResources" when trying to use 
the BeanEditForm component?</h3><p>This can occur when you choose the wrong 
package for your data object, the object edited by the BeanEditForm component. 
If you place it in the same package as your pages, Tapestry will treat it like 
a page, and perform a number of transformation on it, including adding a new 
constructor.</p><p>Only component classes should go in the Tapestry-controlled 
packages (<code>pages</code>, <code>components</code>, <code>mixins</code> and 
<code>base</code> under your application's root package). By convention, simple 
data objects should go in a <code>data</code> package, and Hibernate entities 
should go in an <code>entities</code> pac
 kage.</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 is likely a bit different in 
5.3 than in 5.2 (because 5.3 builds a very different constructor into the 
component) and needs to be tested in 5.3 to see what exact exception will 
occur.</p></div></div><h3 
id="SpecificErrorsFAQ-Igetanerrorabout&quot;Pagedidnotgenerateanymarkupwhenrendered.&quot;butIhaveatemplate,whathappened?">I
 get an error about "Page did not generate any markup when rendered." but I 
have a template, what happened?</h3><p>The most common error here is that the 
case of the page class did not match the case of the template. For example, you 
might name your class ViewOrders, but name the template vieworders.tml. The 
correct name for the template is ViewOrders.tml, matching the case of the Java 
class name.</p><p>Worse, you may find tha
 t your application works during development (under Windows, which is case 
insensitive) but does not work when deployed on a Linux or Unix server, which 
may be case sensitive.</p><p>The other cause of this may be that your template 
files simply are not being packaged up correctly with the rest of your 
application. When in doubt, use the Java <code>jar</code> command to see 
exactly whats inside your WAR file. Your page templates should either be in the 
root folder of the WAR, or package with the corresponding .class file.</p><h3 
id="SpecificErrorsFAQ-MyapplicationfailswiththeerrorPermGen,howdoIfixthis?">My 
application fails with the error <strong>PermGen</strong>, how do I fix 
this?</h3><p>In Java versions <em>prior to</em> JDK 1.8, PermGen refers to the 
part of the Java memory space devoted to permanent objects, which are mostly 
loaded classes. When developing under Tapestry, many more classes and class 
loaders are created than normal; this is part of live class reloading. Because 
of
  this, you will want to increase the amount of memory Java devotes to 
this.</p><p>In JDK 1.7 and earlier, the solution is to add 
<code>-XX:MaxPermSize=512m</code> to your command line. You may also want to 
increase the regular amount of heap space with <code>-Xmx600M</code>. Of 
course, you may need to adjust the amount of memory in each category to match 
your actual application, but these are good starting values.</p><p>Java Virtual 
Machine arguments can be specified inside an Eclipse launch 
configuration:</p><p>&#160;</p><p><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-thumbnail" 
src="specific-errors-faq.data/eclipse-permgen.png"></span></p><h3 
id="SpecificErrorsFAQ-WhydoIsometimesgetajava.lang.NoSuchMethodErrorexceptionafterreloadingmypage?">Why
 do I sometimes get a <code>java.lang.NoSuchMethodError</code> exception after 
reloading my page?</h3><p>Tapestry's live class reloading is not 
perfect.&#160;<span>It tends to use a lot of J
 ava ClassLoaders on top of the normal ClassLoaders used by the Java Virtual 
Machine and the servlet container. When you change non-component classes and 
interfaces that are referenced by components and pages, such as to add or 
change a method, only the component classes are reloaded. The non-component 
classes are frozen as they were when they were </span><em>first</em><span> 
loaded.</span></p><p>Unfortunately, this is one of the areas where you must 
restart your application entirely in order to force the new versions of the 
non-component classes to be loaded into memory.</p><h3 
id="SpecificErrorsFAQ-Whydomylogscontain&quot;java.lang.RuntimeException:FormsrequirethattherequestmethodbePOSTandthatthet:formdataqueryparameterhavevalues&quot;?">Why
 do my logs contain "java.lang.RuntimeException: Forms require that the request 
method be POST and that the t:formdata query parameter have 
values"?</h3><p>This is caused by someone (or something) submitting the URL of 
your form using an HTTP GE
 T instead of POST. Tapestry forms must always use POST actions.</p><p>Some 
known scenarios that cause this error:</p><ul><li>Bots crawling your 
site</li><li>Web browser auto-complete functions trying to be 
helpful</li><li>Users with browser developer tools manually modifying the form 
from a POST to a GET to see what will happen.</li><li>Users getting a 
validation error on a form, then re-submitting the form by clicking in the URL 
address field and hitting Enter.</li><li>In Tapestry versions before 5.4, 
(rarely) the use of property names for form fields where the property name 
matches a JavaScript property (see <a  class="external-link" 
href="https://issues.apache.org/jira/browse/TAP5-2066";>TAP5-2066</a>).</li></ul><p>In
 every known scenario except the last, these errors are harmless and you 
probably want to redirect the user to the page the form is on &#8211; and avoid 
logging an error. That's not too hard to do. Just add code like the following 
to your module class (usually AppModu
 le.java):</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">
+<h2 
id="SpecificErrorsFAQ-WhydoIgettheexception&quot;Noserviceimplementstheinterfaceorg.apache.tapestry5.internal.InternalComponentResources&quot;whentryingtousetheBeanEditFormcomponent?">Why
 do I get the exception "No service implements the interface 
org.apache.tapestry5.internal.InternalComponentResources" when trying to use 
the BeanEditForm component?</h2><p>This can occur when you choose the wrong 
package for your data object, the object edited by the BeanEditForm component. 
If you place it in the same package as your pages, Tapestry will treat it like 
a page, and perform a number of transformation on it, including adding a new 
constructor.</p><p>Only component classes should go in the Tapestry-controlled 
packages (<code>pages</code>, <code>components</code>, <code>mixins</code> and 
<code>base</code> under your application's root package). By convention, simple 
data objects should go in a <code>data</code> package, and Hibernate entities 
should go in an <code>entities</code> pac
 kage.</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 is likely a bit different in 
5.3 than in 5.2 (because 5.3 builds a very different constructor into the 
component) and needs to be tested in 5.3 to see what exact exception will 
occur.</p></div></div><h2 
id="SpecificErrorsFAQ-Igetanerrorabout&quot;Pagedidnotgenerateanymarkupwhenrendered.&quot;butIhaveatemplate,whathappened?">I
 get an error about "Page did not generate any markup when rendered." but I 
have a template, what happened?</h2><p>The most common error here is that the 
case of the page class did not match the case of the template. For example, you 
might name your class ViewOrders, but name the template vieworders.tml. The 
correct name for the template is ViewOrders.tml, matching the case of the Java 
class name.</p><p>Worse, you may find tha
 t your application works during development (under Windows, which is case 
insensitive) but does not work when deployed on a Linux or Unix server, which 
may be case sensitive.</p><p>The other cause of this may be that your template 
files simply are not being packaged up correctly with the rest of your 
application. When in doubt, use the Java <code>jar</code> command to see 
exactly whats inside your WAR file. Your page templates should either be in the 
root folder of the WAR, or package with the corresponding .class file.</p><h2 
id="SpecificErrorsFAQ-MyapplicationfailswiththeerrorPermGen,howdoIfixthis?">My 
application fails with the error <strong>PermGen</strong>, how do I fix 
this?</h2><p>In Java versions <em>prior to</em> JDK 1.8, PermGen refers to the 
part of the Java memory space devoted to permanent objects, which are mostly 
loaded classes. When developing under Tapestry, many more classes and class 
loaders are created than normal; this is part of live class reloading. Because 
of
  this, you will want to increase the amount of memory Java devotes to 
this.</p><p>In JDK 1.7 and earlier, the solution is to add 
<code>-XX:MaxPermSize=512m</code> to your command line. You may also want to 
increase the regular amount of heap space with <code>-Xmx600M</code>. Of 
course, you may need to adjust the amount of memory in each category to match 
your actual application, but these are good starting values.</p><p>Java Virtual 
Machine arguments can be specified inside an Eclipse launch 
configuration:</p><p>&#160;</p><p><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-thumbnail" 
src="specific-errors-faq.data/eclipse-permgen.png"></span></p><h2 
id="SpecificErrorsFAQ-WhydoIsometimesgetajava.lang.NoSuchMethodErrorexceptionafterreloadingmypage?">Why
 do I sometimes get a <code>java.lang.NoSuchMethodError</code> exception after 
reloading my page?</h2><p>Tapestry's live class reloading is not 
perfect.&#160;<span>It tends to use a lot of J
 ava ClassLoaders on top of the normal ClassLoaders used by the Java Virtual 
Machine and the servlet container. When you change non-component classes and 
interfaces that are referenced by components and pages, such as to add or 
change a method, only the component classes are reloaded. The non-component 
classes are frozen as they were when they were </span><em>first</em><span> 
loaded.</span></p><p>Unfortunately, this is one of the areas where you must 
restart your application entirely in order to force the new versions of the 
non-component classes to be loaded into memory.</p><h2 
id="SpecificErrorsFAQ-Whydomylogscontain&quot;java.lang.RuntimeException:FormsrequirethattherequestmethodbePOSTandthatthet:formdataqueryparameterhavevalues&quot;?">Why
 do my logs contain "java.lang.RuntimeException: Forms require that the request 
method be POST and that the t:formdata query parameter have 
values"?</h2><p>This is caused by someone (or something) submitting the URL of 
your form using an HTTP GE
 T instead of POST. Tapestry forms must always use POST actions.</p><p>Some 
known scenarios that cause this error:</p><ul><li>Bots crawling your 
site</li><li>Web browser auto-complete functions trying to be 
helpful</li><li>Users with browser developer tools manually modifying the form 
from a POST to a GET to see what will happen.</li><li>Users getting a 
validation error on a form, then re-submitting the form by clicking in the URL 
address field and hitting Enter.</li><li>In Tapestry versions before 5.4, 
(rarely) the use of property names for form fields where the property name 
matches a JavaScript property (see <a  class="external-link" 
href="https://issues.apache.org/jira/browse/TAP5-2066";>TAP5-2066</a>).</li></ul><p>In
 every known scenario except the last, these errors are harmless and you 
probably want to redirect the user to the page the form is on &#8211; and avoid 
logging an error. That's not too hard to do. Just add code like the following 
to your module class (usually AppModu
 le.java):</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;">    /**
      * Redirect the user to the intended page when browsing through
      * tapestry forms through browser history or over-eager autocomplete


Reply via email to