Author: buildbot Date: Mon Feb 12 03:22:44 2018 New Revision: 1025244 Log: Production update by buildbot for tapestry
Added: websites/production/tapestry/content/cache/main.pageCache (with props) Modified: websites/production/tapestry/content/application-module-class-cheat-sheet.html websites/production/tapestry/content/bean-validation.html websites/production/tapestry/content/community.html websites/production/tapestry/content/component-events-faq.html websites/production/tapestry/content/component-events.html websites/production/tapestry/content/component-libraries.html websites/production/tapestry/content/component-mixins.html websites/production/tapestry/content/component-parameters.html websites/production/tapestry/content/component-reference.html websites/production/tapestry/content/component-report.html websites/production/tapestry/content/component-templates.html websites/production/tapestry/content/configuration.html websites/production/tapestry/content/exploring-the-project.html websites/production/tapestry/content/forms-and-validation.html websites/production/tapestry/content/general-questions.html websites/production/tapestry/content/hibernate-user-guide.html websites/production/tapestry/content/injection-in-detail.html websites/production/tapestry/content/integrating-with-jpa.html websites/production/tapestry/content/integrating-with-spring-framework.html websites/production/tapestry/content/javascript-rewrite-in-54.html websites/production/tapestry/content/legacy-javascript.html websites/production/tapestry/content/link-components-faq.html websites/production/tapestry/content/page-and-component-classes-faq.html websites/production/tapestry/content/parallel-execution.html websites/production/tapestry/content/property-expressions.html websites/production/tapestry/content/registry-startup.html websites/production/tapestry/content/release-notes-50.html websites/production/tapestry/content/release-notes-51.html websites/production/tapestry/content/release-notes-52.html websites/production/tapestry/content/release-notes-53.html websites/production/tapestry/content/service-advisors.html websites/production/tapestry/content/service-implementation-reloading.html websites/production/tapestry/content/session-storage.html websites/production/tapestry/content/since-and-deprecated-user-macros.html websites/production/tapestry/content/starting-the-ioc-registry.html websites/production/tapestry/content/tapestry-ioc-configuration.html websites/production/tapestry/content/tapestry-ioc-decorators.html websites/production/tapestry/content/using-jsr-330-standard-annotations.html websites/production/tapestry/content/version-numbers.html Modified: websites/production/tapestry/content/application-module-class-cheat-sheet.html ============================================================================== --- websites/production/tapestry/content/application-module-class-cheat-sheet.html (original) +++ websites/production/tapestry/content/application-module-class-cheat-sheet.html Mon Feb 12 03:22:44 2018 @@ -76,11 +76,11 @@ <div id="content"> <div id="ConfluenceContent"><p> </p><p>The <strong>Application Module</strong> class is a simple Java class used to configure Tapestry. A system of annotations and naming conventions allows Tapestry to determine what services are provided by the module to your application. This is the place where you bind your custom implementation of services, contribute to, decorate and override existing services.</p><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1518351701587 {padding: 0px;} -div.rbtoc1518351701587 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1518351701587 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1518405664290 {padding: 0px;} +div.rbtoc1518405664290 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1518405664290 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1518351701587"> +/*]]>*/</style></p><div class="toc-macro rbtoc1518405664290"> <ul class="toc-indentation"><li>Related Articles</li></ul> <ul><li><a href="#ApplicationModuleClassCheatSheet-Namingconventions">Naming conventions</a> <ul class="toc-indentation"><li><a href="#ApplicationModuleClassCheatSheet-Thebindmethod">The bind method</a></li><li><a href="#ApplicationModuleClassCheatSheet-Servicebuildermethods">Service builder methods</a></li><li><a href="#ApplicationModuleClassCheatSheet-Contributemethods">Contribute methods</a> Modified: websites/production/tapestry/content/bean-validation.html ============================================================================== --- websites/production/tapestry/content/bean-validation.html (original) +++ websites/production/tapestry/content/bean-validation.html Mon Feb 12 03:22:44 2018 @@ -82,8 +82,8 @@ <div class="aui-message aui-message-info"> -Added in 5.2 | -  +Added in 5.2 +   </div><p><strong>Bean validation</strong> involves validating user input using Tapestry's built-in support for the <a class="external-link" href="http://jcp.org/en/jsr/detail?id=303" rel="nofollow">JSR 303 Bean Validation API</a>.</p><div class="aui-label" style="float:right" title="Related Articles"> Added: websites/production/tapestry/content/cache/main.pageCache ============================================================================== Binary file - no diff available. Propchange: websites/production/tapestry/content/cache/main.pageCache ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Modified: websites/production/tapestry/content/community.html ============================================================================== --- websites/production/tapestry/content/community.html (original) +++ websites/production/tapestry/content/community.html Mon Feb 12 03:22:44 2018 @@ -68,11 +68,11 @@ <div id="content"> <div id="ConfluenceContent"><p>Tapestry has an active community of users and developers. This is an overview of how to participate, along with a list of some of the great contributions of the community members.</p><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1518351680299 {padding: 0px;} -div.rbtoc1518351680299 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1518351680299 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1518405645567 {padding: 0px;} +div.rbtoc1518405645567 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1518405645567 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1518351680299"> +/*]]>*/</style></p><div class="toc-macro rbtoc1518405645567"> <ul class="toc-indentation"><li><a href="#Community-GettingInvolved">Getting Involved</a> <ul class="toc-indentation"><li><a href="#Community-ReportingProblems/GettingSupport">Reporting Problems / Getting Support</a></li><li><a href="#Community-ContributingtranslationsforTapestrybuilt-inmessages">Contributing translations for Tapestry built-in messages</a></li><li><a href="#Community-SourceCodeAccess">Source Code Access</a></li><li><a href="#Community-BecomingaContributor">Becoming a Contributor</a></li><li><a href="#Community-BecomingaCommitter">Becoming a Committer</a></li></ul> </li><li><a href="#Community-CommunityContributions">Community Contributions</a> Modified: websites/production/tapestry/content/component-events-faq.html ============================================================================== --- websites/production/tapestry/content/component-events-faq.html (original) +++ websites/production/tapestry/content/component-events-faq.html Mon Feb 12 03:22:44 2018 @@ -82,16 +82,16 @@ </p><div class="aui-message aui-message-info"> -Added in 5.2 | -If you want to short-circuit this behavior and render a response directly, your component event handle method may return an instance of [StreamPageContent|http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/StreamPageContent.html]. Tapestry will render the page as part of the event request and stream its content back to the client web browser, rather than sending the normal redirect. +Added in 5.2 + If you want to short-circuit this behavior and render a response directly, your component event handle method may return an instance of [StreamPageContent|http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/StreamPageContent.html]. Tapestry will render the page as part of the event request and stream its content back to the client web browser, rather than sending the normal redirect. </div> <div class="aui-message aui-message-info"> -Added in 5.4 | -Starting in release 5.4, Forms (by default) will NOT redirect after post if there are validation errors. This makes it possible to re-render the page, with error decorations, without requiring that the validation errors be stored in the session between requests ... and that means that the application can remain stateless much longer. +Added in 5.4 + Starting in release 5.4, Forms (by default) will NOT redirect after post if there are validation errors. This makes it possible to re-render the page, with error decorations, without requiring that the validation errors be stored in the session between requests ... and that means that the application can remain stateless much longer. </div><h3 id="ComponentEventsFAQ-IspecifiedazoneinmyActionLink/EventLink,sowhydoesn'tmyeventfireviaajax(request.isXHR()isfalse)?">I specified a zone in my ActionLink/EventLink, so why doesn't my event fire via ajax (request.isXHR() is false)?</h3><p>Check your browser's JavaScript console for errors. It's likely that a JavaScript error has prevented Tapestry from transforming your ActionLink/EventLink from a page render action to an ajax action.</p></div> </div> Modified: websites/production/tapestry/content/component-events.html ============================================================================== --- websites/production/tapestry/content/component-events.html (original) +++ websites/production/tapestry/content/component-events.html Mon Feb 12 03:22:44 2018 @@ -167,8 +167,8 @@ void editDocument(int docId) <div class="aui-message aui-message-info"> -Added in 5.3 | -Starting in release 5.3, Tapestry will throw an exception if the component identified for the event handler method doesn't exist in the containing component's template. This helps prevent typos. +Added in 5.3 + Starting in release 5.3, Tapestry will throw an exception if the component identified for the event handler method doesn't exist in the containing component's template. This helps prevent typos. </div><p>In the above example, the editDocument() method will be invoked when any event occurs in in the "edit" component (and has at least one context value).</p><p>For some components, more than one type of event can occur, in which case you will want to be more specific:</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;">@OnEvent(value="action", component="edit") Modified: websites/production/tapestry/content/component-libraries.html ============================================================================== --- websites/production/tapestry/content/component-libraries.html (original) +++ websites/production/tapestry/content/component-libraries.html Mon Feb 12 03:22:44 2018 @@ -256,8 +256,8 @@ public class HappyModule <div class="aui-message aui-message-info"> -Added in 5.2 | -In version 5.2 and later, Tapestry automatically creates a mapping for assets inside your JAR. In the above example, the icon image will be exposed as {{/assets/}}{_}application version{_}{{/happy/components/happy.jpg}} (the application version number is incorporated into the URL). The "happy" portion is a virtual folder that maps to the library's root package (as folder {{org/example/happylib}} on the Java classpath). The application version is a configurable value. +Added in 5.2 + In version 5.2 and later, Tapestry automatically creates a mapping for assets inside your JAR. In the above example, the icon image will be exposed as {{/assets/}}{_}application version{_}{{/happy/components/happy.jpg}} (the application version number is incorporated into the URL). The "happy" portion is a virtual folder that maps to the library's root package (as folder {{org/example/happylib}} on the Java classpath). The application version is a configurable value. </div><h2 id="ComponentLibraries-Conclusion">Conclusion</h2><p>That's it! Autoloading plus the virtual folders for components and for assets takes care of all the issues related to components. Just build your JARs, setup the JAR Manifest, and drop them into your applications.</p></div> </div> Modified: websites/production/tapestry/content/component-mixins.html ============================================================================== --- websites/production/tapestry/content/component-mixins.html (original) +++ websites/production/tapestry/content/component-mixins.html Mon Feb 12 03:22:44 2018 @@ -101,7 +101,7 @@ <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span> </div> <div class="details"> - <a href="legacy-javascript.html">Legacy JavaScript</a> + <a href="component-templates.html">Component Templates</a> </div> @@ -110,7 +110,7 @@ <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span> </div> <div class="details"> - <a href="component-templates.html">Component Templates</a> + <a href="legacy-javascript.html">Legacy JavaScript</a> </div> Modified: websites/production/tapestry/content/component-parameters.html ============================================================================== --- websites/production/tapestry/content/component-parameters.html (original) +++ websites/production/tapestry/content/component-parameters.html Mon Feb 12 03:22:44 2018 @@ -180,11 +180,11 @@ </div></div><p>A component may have any number of parameters. Each parameter has a specific name, a specific Java type (which may be a primitive value), and may be <em>optional</em> or <em>required</em>.</p><p>Within a component class, parameters are declared by using the @<a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Parameter.html">Parameter</a> annotation on a private field, as we'll see below.</p><p><span class="confluence-anchor-link" id="ComponentParameters-bindingparameters"></span></p><h1 id="ComponentParameters-ParameterBindings">Parameter Bindings</h1><p>In Tapestry, a parameter is not a slot into which data is pushed: it is a <em>connection</em> between a field of the component (marked with the @Parameter annotation) and a property or resource of the component's container. (Components can be nested, so the container can be either the page or another component.)</p><div class="navmenu" style="float:right; backgr ound:white; margin:3px; padding:3px"> <div class="panel" style="border-width: 1px;"><div class="panelHeader" style="border-bottom-width: 1px;"><b>Contents</b></div><div class="panelContent"> <style type="text/css">/*<![CDATA[*/ -div.rbtoc1518351745326 {padding: 0px;} -div.rbtoc1518351745326 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1518351745326 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1518405704819 {padding: 0px;} +div.rbtoc1518405704819 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1518405704819 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style><div class="toc-macro rbtoc1518351745326"> +/*]]>*/</style><div class="toc-macro rbtoc1518405704819"> <ul class="toc-indentation"><li><a href="#ComponentParameters-ParameterBindings">Parameter Bindings</a></li><li><a href="#ComponentParameters-BindingExpressions">Binding Expressions</a></li><li><a href="#ComponentParameters-@Parameterannotation">@Parameter annotation</a></li><li><a href="#ComponentParameters-Don'tusethe${...}syntax!">Don't use the ${...} syntax!</a></li><li><a href="#ComponentParameters-InformalParameters">Informal Parameters</a></li><li><a href="#ComponentParameters-ParametersAreBi-Directional">Parameters Are Bi-Directional</a></li><li><a href="#ComponentParameters-InheritedParameterBindings">Inherited Parameter Bindings</a></li><li><a href="#ComponentParameters-ComputedParameterBindingDefaults">Computed Parameter Binding Defaults</a></li><li><a href="#ComponentParameters-UnboundParameters">Unbound Parameters</a></li><li><a href="#ComponentParameters-ParameterTypeCoercion">Parameter Type Coercion</a></li><li><a href="#ComponentParameters-ParameterNames"> Parameter Names</a></li><li><a href="#ComponentParameters-DeterminingifBound">Determining if Bound</a></li><li><a href="#ComponentParameters-PublishingParameters">Publishing Parameters</a></li></ul> </div> </div></div></div> <p>The connection between a component and a property (or resource) of its container is called a <em>binding</em>. The binding is two-way: the component can read the bound property by reading its parameter field. Likewise, a component that updates its parameter field will update the bound property.</p><p>This is important in a lot of cases; for example a TextField component can read <em>and update</em> the property bound to its value parameter. It reads the value when rendering, but updates the value when the form is submitted.</p><p>The component listed below is a looping component; it renders its body a number of times, defined by its <code>start</code> and <code>end</code> parameters (which set the boundaries of the loop). The component can update a <code>result</code> parameter bound to a property of its container; it will automatically count up or down depending on whether <code>start</code> or <code>end</code> is larger.</p><div class="code panel pdl" st yle="border-width: 1px;"><div class="codeContent panelContent pdl"> Modified: websites/production/tapestry/content/component-reference.html ============================================================================== --- websites/production/tapestry/content/component-reference.html (original) +++ websites/production/tapestry/content/component-reference.html Mon Feb 12 03:22:44 2018 @@ -110,11 +110,11 @@ <p> </p><p><strong>Contents</strong></p><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1518351667693 {padding: 0px;} -div.rbtoc1518351667693 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1518351667693 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1518405633769 {padding: 0px;} +div.rbtoc1518405633769 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1518405633769 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1518351667693"> +/*]]>*/</style></p><div class="toc-macro rbtoc1518405633769"> <ul class="toc-indentation"><li><a href="#ComponentReference-Tapestry-providedComponents">Tapestry-provided Components</a> <ul class="toc-indentation"><li><a href="#ComponentReference-AJAX-specificComponents">AJAX-specific Components</a></li><li><a href="#ComponentReference-BeanDisplaying&Editing">Bean Displaying & Editing</a></li><li><a href="#ComponentReference-ConditionalandLoopingComponents">Conditional and Looping Components</a></li><li><a href="#ComponentReference-FormComponents">Form Components</a></li><li><a href="#ComponentReference-Grids,TablesandTrees">Grids, Tables and Trees</a></li><li><a href="#ComponentReference-LinksandButtons">Links and Buttons</a></li><li><a href="#ComponentReference-OutputandMessages">Output and Messages</a></li><li><a href="#ComponentReference-Miscellaneous">Miscellaneous</a></li></ul> </li><li><a href="#ComponentReference-TapestryMixins">Tapestry Mixins</a></li><li><a href="#ComponentReference-TapestryPages">Tapestry Pages</a></li><li><a href="#ComponentReference-BaseComponents">Base Components</a></li><li><a href="#ComponentReference-OtherComponentLibraries">Other Component Libraries</a></li></ul> Modified: websites/production/tapestry/content/component-report.html ============================================================================== --- websites/production/tapestry/content/component-report.html (original) +++ websites/production/tapestry/content/component-report.html Mon Feb 12 03:22:44 2018 @@ -103,8 +103,8 @@ <div class="aui-message aui-message-info"> -Added in 5.3 | -  +Added in 5.3 +   </div><p>In version 5.3 the configuration of the Maven plugin changed in a backward incompatible way. The configuration expects the <em><rootPackages></em> element, which may have several <em><rootPackage></em> elements. You should change the plugin configuration as shown below or you can still use the 5.2.4 version of the plugin without to change anything.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> <pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><plugin> <groupId>org.apache.tapestry</groupId> Modified: websites/production/tapestry/content/component-templates.html ============================================================================== --- websites/production/tapestry/content/component-templates.html (original) +++ websites/production/tapestry/content/component-templates.html Mon Feb 12 03:22:44 2018 @@ -196,8 +196,8 @@ <div class="aui-message aui-message-info"> -Added in 5.3 | -Tapestry 5.3 introduced two significant improvements to template Doctypes. +Added in 5.3 + Tapestry 5.3 introduced two significant improvements to template Doctypes. A template without a is parsed as if it had the HTML Doctype ({{}}). In fact, Tapestry creates an in-memory copy of the template that includes the doctype. Modified: websites/production/tapestry/content/configuration.html ============================================================================== --- websites/production/tapestry/content/configuration.html (original) +++ websites/production/tapestry/content/configuration.html Mon Feb 12 03:22:44 2018 @@ -147,11 +147,11 @@ <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.rbtoc1518355172930 {padding: 0px;} -div.rbtoc1518355172930 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1518355172930 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1518405723540 {padding: 0px;} +div.rbtoc1518405723540 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1518405723540 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1518355172930"> +/*]]>*/</style></p><div class="toc-macro rbtoc1518405723540"> <ul class="toc-indentation"><li><a href="#Configuration-XMLconfiguration(web.xml)">XML configuration (web.xml)</a></li><li><a href="#Configuration-YourApplication'sModuleClass">Your Application's Module Class</a></li><li><a href="#Configuration-ConfigurationSymbolNames">Configuration Symbol Names</a></li><li><a href="#Configuration-SettingComponentParameterDefaults">Setting Component Parameter Defaults</a></li><li><a href="#Configuration-ConfiguringIgnoredPaths">Configuring Ignored Paths</a></li><li><a href="#Configuration-ConfiguringContentTypeMapping">Configuring Content Type Mapping</a></li><li><a href="#Configuration-SettingExecutionModes">Setting Execution Modes</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"> <pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><!DOCTYPE web-app @@ -193,22 +193,22 @@ div.rbtoc1518355172930 li {margin-left: <div class="aui-message aui-message-info"> -Added in 5.3 | -  +Added in 5.3 +   </div><p>The folder, of the context, in which the Tapestry application executes. By default this is blank, meaning the Tapestry application executes in the root of the web application context. Setting this value allows the Tapestry application to be <a href="configuration.html">segregated into a folder</a>, which can be useful when Tapestry is executed inside a web application with other servlets or filters.</p><h3 id="Configuration-tapestry.asset-url-fully-qualified(SymbolConstants.ASSET_URL_FULL_QUALIFIED)">tapestry.asset-url-fully-qualified (SymbolConstants.ASSET_URL_FULL_QUALIFIED)</h3> <div class="aui-message aui-message-info"> -Added in 5.3 | -  +Added in 5.3 +   </div><p>A boolean value to indicate whether <a href="configuration.html">asset</a> URLs should be fully qualified in the rendered page.<br clear="none"> This defaults to <code>false</code> (not fully qualified).</p><h3 id="Configuration-tapestry.asset-path-prefix(SymbolConstants.ASSET_PATH_PREFIX)">tapestry.asset-path-prefix (SymbolConstants.ASSET_PATH_PREFIX)</h3> <div class="aui-message aui-message-info"> -Added in 5.3.1 | -  +Added in 5.3.1 +   </div><p>The prefix to be used for all asset paths. This should start <em>and</em> end with a slash ("/"). By default this is "/assets/".</p><h3 id="Configuration-tapestry.blackbird-enabled(SymbolConstants.BLACKBIRD_ENABLED)">tapestry.blackbird-enabled (SymbolConstants.<a class="external-link" href="http://tapestry.apache.org/5.3/apidocs/src-html/org/apache/tapestry5/SymbolConstants.html#line.202"><strong>BLACKBIRD_ENABLED</strong></a>)</h3><p>A flag (true or false). When "false" the Blackbird JavaScript console will be disabled (in Tapestry 5.2 and newer). Defaults to "true".</p> @@ -220,29 +220,29 @@ The client-side BlackBird console has be <div class="aui-message aui-message-info"> -Added in 5.4 | -  +Added in 5.4 +   </div><p>The root asset path for Twitter Bootstrap; if your application uses a modified version of Bootstrap, you can override this symbol to have Tapestry automatically use your version. The value should be a path to a folder (under "classpath:" or "context:") and should not include a trailing slash.</p><h3 id="Configuration-tapestry.charset(SymbolConstants.CHARSET)">tapestry.charset (SymbolConstants.CHARSET)</h3><p>The character encoding used when generating output (or parsing input). The default is "UTF-8". See <a href="content-type-and-markup.html">Content Type and Markup</a> for more details.</p><h3 id="Configuration-tapestry.clustered-sessions(SymbolConstants.CLUSTERED_SESSIONS)">tapestry.clustered-sessions (SymbolConstants.CLUSTERED_SESSIONS)</h3> <div class="aui-message aui-message-info"> -Added in 5.3 | -  +Added in 5.3 +   </div><p>If "true" then at the end of each request the SessionPersistedObjectAnalyzer will be called on each session persisted object that was accessed during the request. The default is "true", to preserve 5.2 behavior. For non-clustered applications (the majority), this value should be overridden to "false".</p><h3 id="Configuration-tapestry.combine-scripts(SymbolConstants.COMBINE_SCRIPTS)">tapestry.combine-scripts (SymbolConstants.COMBINE_SCRIPTS)</h3><p>If "true", then Tapestry will combine (or "aggregate") the individual JavaScript libraries within a JavaScript stack; this reduces the number of requests from the client to the server, as the client can cache the combined JavaScript files locally (and will not need to re-download them on subsequent pages). The implementation of this changed significantly between Tapestry 5.1 and 5.2.</p><p>Defaults to "true" in production mode.</p><h3 id="Configuration-tapestry.compact-json(SymbolConstants.COMPACT_JSON)">tapestry.compact-json (Sy mbolConstants.COMPACT_JSON)</h3> <div class="aui-message aui-message-info"> -Added in 5.2 | -  +Added in 5.2 +   </div><p>If "true", then JSON page initialization content is compressed; if "false" then extra white space is added (pretty printing). Defaults to "true" in production mode.</p><h3 id="Configuration-tapestry.compatibility.unknown-component-id-check-enabled(SymbolConstants.UNKNOWN_COMPONENT_ID_CHECK_ENABLED)">tapestry.compatibility.unknown-component-id-check-enabled (SymbolConstants.UNKNOWN_COMPONENT_ID_CHECK_ENABLED)</h3> <div class="aui-message aui-message-info"> -Added in 5.3 | -  +Added in 5.3 +   </div> @@ -254,29 +254,29 @@ Deprecated since 5.3 | <div class="aui-message aui-message-info"> -Added in 5.4 | -  +Added in 5.4 +   </div><p>Prefix used for all module resources. This may contain slashes, but should not being or end with one. Tapestry will create two Dispatchers from this: one for normal modules, the other for GZip compressed modules (by appending ".gz" to this value).</p><h3 id="Configuration-tapestry.context-path(SymbolConstants.CONTEXT_PATH)">tapestry.context-path (SymbolConstants.CONTEXT_PATH)</h3> <div class="aui-message aui-message-info"> -Added in 5.4 | -  +Added in 5.4 +   </div><p>Identifies the context path of the application, as determined from ServletContext.getContextPath() method. This is either a blank string or a string that starts with a slash but does not end with one.</p><h3 id="Configuration-tapestry.datepicker(SymbolConstants.DATEPICKER)">tapestry.datepicker (SymbolConstants.DATEPICKER)</h3> <div class="aui-message aui-message-info"> -Added in 5.2 | -  +Added in 5.2 +   </div><p>The path to the assets of the embedded DatePicker component</p><h3 id="Configuration-tapestry.default-cookie-max-age(SymbolConstants.)">tapestry.default-cookie-max-age (SymbolConstants.)</h3><p>The default time interval that cookies created by Tapestry will be kept in the client web browser. Primarily, this is used with a cookie that exists to track the preferred user locale. The default value is "7 d" (7 days; see <a 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.default-stylesheet(SymbolConstants.DEFAULT_STYLESHEET)">tapestry.default-stylesheet (SymbolConstants.DEFAULT_STYLESHEET)</h3> <div class="aui-message aui-message-info"> -Added in 5.3.6 | -  +Added in 5.3.6 +   </div><p>In 5.3, this is the default stylesheet automatically injected into every rendered HTML page. Many Tapestry components assume that this stylesheet is available. All the classes defined in the stylesheet are prefixed with "t-". The exact contents of the stylesheet are subject to change at any time (they are considered internal), so replacing the stylesheet, rather than overriding selected rules within it, entails some risk.</p><p>The default is org/apache/tapestry5/default.css, stored on the classpath.</p> @@ -288,15 +288,15 @@ Deprecated in 5.4 with no replacement. T <div class="aui-message aui-message-info"> -Added in 5.3.6 | -  +Added in 5.3.6 +   </div><p>If "true", then resources (individually or when aggregated into stacks) will be minimized via the ResourceMinimizer service. If "false", then minification is disabled. The default is "true" in production mode, "false" otherwise.</p><p>Note that Tapestry's default implementation of ResourceMinimizer does nothing; minification is provided by add-on libraries. See <a href="assets.html">Assets</a> for details.</p><h3 id="Configuration-tapestry.encode-locale-into-path(SymbolConstants.ENCODE_LOCALE_INTO_PATH)">tapestry.encode-locale-into-path (SymbolConstants.ENCODE_LOCALE_INTO_PATH)</h3><p>If "true" (the default), then the <a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/PersistentLocale.html">PersistentLocale</a> will be encoded into URLs by the ComponentEventLinkEncoder service. If overridden to "false" this does not occur, but you should provide a LinkCreationListener2 (registered with the LinkCreationHub) in order to a dd the locale as a query parameter (or provide some alternate means of persisting the locale between requests). See <a href="localization.html">Localization</a> for more details on localization.</p><h3 id="Configuration-tapestry.exception-report-page(SymbolConstants.EXCEPTION_REPORT_PAGE)">tapestry.exception-report-page (SymbolConstants.EXCEPTION_REPORT_PAGE)</h3><p>The name of the page used to report exceptions. This defaults to "ExceptionReport", a page that Tapestry provides. See <a href="overriding-exception-reporting.html">Overriding Exception Reporting</a> for details.</p><h3 id="Configuration-tapestry.exception-reports-dir(SymbolConstants.EXCEPTION_REPORTS_DIR)">tapestry.exception-reports-dir (SymbolConstants.EXCEPTION_REPORTS_DIR)</h3><p> </p><div class="aui-message aui-message-info"> -Added in 5.4 | -  +Added in 5.4 +   </div>The root directory where Tapestry's built-in OperationTracker will create dated folders into which it writes exception report files. This is <code>build/exceptions</code> by default but should be overridden for production. See the related <code>tapestry.restrictive-environment</code> symbol below.<h3 id="Configuration-tapestry.execution-mode(SymbolConstants.EXECUTION_MODE)">tapestry.execution-mode  (SymbolConstants.EXECUTION_MODE)</h3><p>The execution mode. See <a href="configuration.html">Setting Execution Modes</a> below.</p><h3 id="Configuration-tapestry.file-check-interval(SymbolConstants.FILE_CHECK_INTERVAL)">tapestry.file-check-interval (SymbolConstants.FILE_CHECK_INTERVAL)</h3><p>Time interval between file system checks. During a file system check, only a single thread is active (all others are blocked) and any files loaded are checked for changes (this is part of Tapestry's <a href="class-reloading.html">Class Reloading</a> mechanism).</p><p>The default is "1 s" (one second; see <a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/util/TimeInterval.html">Time Interval Formats</a>), and is usually overridden with a higher value in production (say, between one and five minutes).</p><h3 id="Configuration-tapestry.file-check-update-timeout(SymbolConstants.FILE_CHECK_UPDATE_TIMEOUT)">tapestry.file-check-update-timeout (SymbolConstants.FILE_CHECK_UPDATE_TIMEOUT)</h3><p>Time interval that Tapestry will wait to obtain the exclusive lock needed for a file check. If the exclusive lock can't be obtained in that amount of time, the request will proceed normally (without the check), but each successive request will attempt to get the lock and perform the check until successful.</p><p>The default is "50 ms" (50 milliseconds; see <a 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.force-absolute-uris(SymbolConstants.FORCE_ABSOLUTE_URIS)">tapestry.force-absolute-uris (SymbolConstants.<span>FORCE_ABSOLUTE_URIS</span>)</h3> @@ -308,50 +308,50 @@ Starting in Tapestry 5.2, the optimizati <div class="aui-message aui-message-info"> -Added in 5.3 | -  +Added in 5.3 +   </div><p>The hostname that application should use when constructing an absolute URL. The default is "", i.e. an empty string, in which case system will use request.getServerName(). Not the same as environment variable HOSTNAME (but you could contribute "$HOSTNAME" as the value to make it the same).</p><h3 id="Configuration-tapestry.hostport(SymbolConstants.HOSTPORT)">tapestry.hostport (SymbolConstants.HOSTPORT)</h3> <div class="aui-message aui-message-info"> -Added in 5.3 | -  +Added in 5.3 +   </div><p>The port that application should use when constructing an absolute URL. The default is "0", which means to use the port value from the request.</p><h3 id="Configuration-tapestry.hostport-secure(SymbolConstants.HOSTPORT_SECURE)">tapestry.hostport-secure (SymbolConstants.HOSTPORT_SECURE)</h3> <div class="aui-message aui-message-info"> -Added in 5.3 | -  +Added in 5.3 +   </div><p>The secure (https) port that application should use when constructing an absolute URL. The default is "0", i.e. use the value from the request.</p><h3 id="Configuration-tapestry.hmac-passphrase(SymbolConstants.HMAC_PASSPHRASE)">tapestry.hmac-passphrase (SymbolConstants.HMAC_PASSPHRASE)</h3> <div class="aui-message aui-message-info"> -Added in 5.3.6 | -  +Added in 5.3.6 +   </div><p>The plaintext phrase used to set the key for <a class="external-link" href="http://en.wikipedia.org/wiki/HMAC" rel="nofollow">HMAC</a> securing of serialized object data. The default is blank, which causes a runtime alert and console error. You should set this to a reasonably unique, private value, and ensure (in a cluster) that all servers use the same value – typically by making a contribution in your applications module class (normally AppModule.java). See <a href="security.html">Security</a> for details.</p><h3 id="Configuration-tapestry.include-core-stack(SymbolConstants.INCLUDE_CORE_STACK)">tapestry.include-core-stack (SymbolConstants.INCLUDE_CORE_STACK)</h3> <div class="aui-message aui-message-info"> -Added in 5.4 | -  +Added in 5.4 +   </div><p>Whether to include Tapestry's "core" stack of JavaScript libraries. The default is "true".</p><h3 id="Configuration-tapestry.javascript-infrastructure-provider(SymbolConstants.JAVASCRIPT_INFRASTRUCTURE_PROVIDER)">tapestry.javascript-infrastructure-provider (SymbolConstants.JAVASCRIPT_INFRASTRUCTURE_PROVIDER)</h3> <div class="aui-message aui-message-info"> -Added in 5.4 | -  +Added in 5.4 +   </div><p>Tapestry relies on an underlying client-side JavaScript infrastructure framework to handle DOM manipulation, event handling, and Ajax requests. Prior to Tapestry 5.4, the foundation was <a class="external-link" href="http://http//prototypejs.org/" rel="nofollow">Prototype</a>. In 5.4 and later, support for <a class="external-link" href="http://jquery.org/" rel="nofollow">jQuery</a> has been added, and it is possible to add others. This symbol defines a value that is used to select a resource that is provided to the ModuleManager service as a JavaScriptModuleConfiguration to provide a specific implementation of the <code>t5/core/dom</code> module. Tapestry 5.4 directly supports "prototype" or "jquery". To support other foundation frameworks, override this symbol value and supply your own module configuration.</p><p>In Tapestry 5.4, this defaults to "prototype" for compatibility with 5.3. This will likely change in 5.5 to default to "jquery". At some point in the future, Pr ototype support may no longer be present.</p><h3 id="Configuration-tapestry.lenient-date-format(SymbolConstants.LENIENT_DATE_FORMAT)">tapestry.lenient-date-format (SymbolConstants.LENIENT_DATE_FORMAT)</h3> <div class="aui-message aui-message-info"> -Added in 5.4 | -When set to true, the DateField component will be lenient about date calculations, for example allowing a January 32 date as input and automatically converting it to February 1. When false (the default), only valid dates may be entered. +Added in 5.4 + When set to true, the DateField component will be lenient about date calculations, for example allowing a January 32 date as input and automatically converting it to February 1. When false (the default), only valid dates may be entered. </div><h3 id="Configuration-tapestry.min-gzip-size(SymbolConstants.MIN_GZIP_SIZE)">tapestry.min-gzip-size (SymbolConstants.MIN_GZIP_SIZE)</h3><p>The minimum stream size necessary for Tapestry to use GZIP compression on the response stream. See <a href="response-compression.html">Response Compression</a> for more details.</p><h3 id="Configuration-tapestry.omit-generator-meta(SymbolConstants.OMIT_GENERATOR_META)">tapestry.omit-generator-meta (SymbolConstants.OMIT_GENERATOR_META)</h3><p>If "true", then the <meta> tag that Tapestry normally writes into the <head>, identifying the Tapestry version, will be omitted. Use this when you do not wish to advertise your application's use of Tapestry.</p><h3 id="Configuration-tapestry.page-pool.active-window">tapestry.page-pool.active-window</h3> @@ -387,15 +387,15 @@ Starting in 5.2, this is only used if ta </p><div class="aui-message aui-message-info"> -Added in 5.4 | -  +Added in 5.4 +   </div>A flag (true or false) that, if true, changes some default Tapestry behavior to make it work better in restrictive environments such as <a href="google-app-engine.html">Google App Engine</a> (GAE). Specifically, if true, then OperationsTracker writes its exception report files into a single folder (specified by the tapestry.exception-reports-dir symbol, above) rather than creating dated sub-folders under that path, and ResourceTransformerFactory avoids creating a cache folder for resources.<h3 id="Configuration-tapestry.secure-enabled(SymbolConstants.SECURE_ENABLED)">tapestry.secure-enabled (SymbolConstants.SECURE_ENABLED)</h3><p>If true, then @<a 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. See <a href="https.html">HTTPS</a> for details.</p><h3 id="Configuration-tapestry.secure-page(MetaDataConstants.SECURE_PAGE)">tapestry.secure-page (MetaDataConstants.SECURE_PAGE)</h3><p>If true, then the page may only be accessed via HTTPS. The @<a 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. See <a href="https.html">HTTPS</a> for details.</p><h3 id="Configuration-tapestry.service-reloading-enabled">tapestry.service-reloading-enabled</h3> <div class="aui-message aui-message-info"> -Added in 5.2 | -  +Added in 5.2 +   </div><p>If true (the default), then Tapestry IoC will attempt to reload service implementations when they change. This only applies to classes that Tapestry IoC instantiates itself, and have a known service interface (the container creates a proxy that, internally, can reload the implementation). Service reloading only works when the underlying class files are on the filesystem ... it is intended for development, not as an option in production.</p><p>This must be specified as a JVM system property. <em>You may not set it in your module class.</em></p><h3 id="Configuration-tapestry.scriptaculous(SymbolConstants.SCRIPTACULOUS)">tapestry.scriptaculous (SymbolConstants.SCRIPTACULOUS)</h3> @@ -406,8 +406,8 @@ Added in 5.2 | <div class="aui-message aui-message-info"> -Added in 5.4 | -  +Added in 5.4 +   </div><p>If true (the default), then Tapestry will use a lock when reading/updating HttpSession attributes, to avoid simultaneous access by multiple threads when using AJAX. See <a class="external-link" href="https://issues.apache.org/jira/browse/TAP5-2049">TAP5-2049</a>. Set to false to deactivate the session locking logic.</p><p>Prior to version 5.4 session locking was not performed.</p><h3 id="Configuration-tapestry.start-page-name(SymbolConstants.START_PAGE_NAME)">tapestry.start-page-name (SymbolConstants.START_PAGE_NAME)</h3><p>The logical name of the start page, the page that is rendered for the <em>root URL</em>. This is normally "start". This functionality is vestigial: it has been superseded by the use of Index pages.</p><p><span class="confluence-anchor-link" id="Configuration-supported-locales"></span></p><h3 id="Configuration-tapestry.strict-css-url-rewriting(SymbolConstants.STRICT_CSS_URL_REWRITING)">tapestry.strict-css-url-rewriting (SymbolConstants.STRICT_CSS_URL_REW RITING)</h3><p>Controls whether to throw an exception (true) or log a warning (false) when Tapestry encounters a URL reference to a non-existing file within a CSS file. The default is false.</p><h3 id="Configuration-tapestry.supported-locales(SymbolConstants.SUPPORTED_LOCALES)">tapestry.supported-locales (SymbolConstants.SUPPORTED_LOCALES)</h3><p>A comma-separated list of supported locales. Incoming requests as "narrowed" to one of these locales, based on closest match. If no match can be found, the first locale in the list is treated as the default.</p><p>The default is (currently) "en,it,es,zh_CN,pt_PT,de,ru,hr,fi_FI,sv_SE,fr_FR,da,pt_BR,ja,el". As the community contributes new localizations of the necessary messages files, this list will expand. Note that the Tapestry quickstart archetype overrides the factory default, forcing the application to be localized only for "en".</p><h3 id="Configuration-tapestry.suppress-redirect-from-action-requests(SymbolConstants.SUPPRESS_REDIRECT_F ROM_ACTION_REQUESTS)">tapestry.suppress-redirect-from-action-requests (SymbolConstants.SUPPRESS_REDIRECT_FROM_ACTION_REQUESTS)</h3> @@ -419,15 +419,15 @@ Deprecated since 5.2 | <div class="aui-message aui-message-info"> -Added in 5.3 | -Previously, the queue size was unbounded, which meant that max-pool-size was ignored. +Added in 5.3 + Previously, the queue size was unbounded, which meant that max-pool-size was ignored. </div><p>Size of the task queue for the thread pool. Once the core pool size is reached, new threads are not created until the queue is full. The default queue size is 100.</p><h3 id="Configuration-tapestry.thread-pool.keep-alive(IOCSymbols.THREAD_POOL_KEEP_ALIVE)">tapestry.thread-pool.keep-alive (IOCSymbols.THREAD_POOL_KEEP_ALIVE)</h3><p>The time to keep a created but unused thread in the pool alive. Defaults to one minute.</p><h3 id="Configuration-tapestry.thread-pool-enabled(IOCSymbols.THREAD_POOL_ENABLED)">tapestry.thread-pool-enabled (IOCSymbols.THREAD_POOL_ENABLED)</h3><p>If set to false, then parallel task execution does not occur. This is useful in environments where creating new threads is not allowed, such as <a href="google-app-engine.html">Google App Engine</a>.</p><h2 id="Configuration-SettingComponentParameterDefaults">Setting Component Parameter Defaults</h2> <div class="aui-message aui-message-info"> -Added in 5.3 | -Some components, notably Grid, Pallete and Zone, have default parameter values specified in terms of symbols. This means you can use these symbols to modify the defaults for all instances of such components in your application. For example, you can set the default rows per page for all Grid instances by adding this to the <code>contributeApplicationDefaults</code> method in your application's module class (typically AppModule.java): <code>configuration.add(ComponentParameterConstants.GRID_ROWS_PER_PAGE, "15");</code> +Added in 5.3 + Some components, notably Grid, Pallete and Zone, have default parameter values specified in terms of symbols. This means you can use these symbols to modify the defaults for all instances of such components in your application. For example, you can set the default rows per page for all Grid instances by adding this to the <code>contributeApplicationDefaults</code> method in your application's module class (typically AppModule.java): <code>configuration.add(ComponentParameterConstants.GRID_ROWS_PER_PAGE, "15");</code> </div><p>See the complete list of such constants at <a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ComponentParameterConstants.html">ComponentParameterConstants</a>.</p><h2 id="Configuration-ConfiguringIgnoredPaths">Configuring Ignored Paths</h2><p>You may sometimes need to use Tapestry in concert with other servlets. This can cause problems, since Tapestry (being a servlet filter) may see URLs intended for another servlet and attempt to process them.</p><p>The Servlet API does not provide Tapestry with any clues about what other servlets are available in the web application. Instead, you must configure Tapestry to ignore paths intended for other servlets.</p><p>The IgnoredPathsFilter service is the method for this kind of configuration. Its configuration is an unordered collection of regular expression patterns. A request whose path matches any of these patterns is <strong>not</strong> processed by Tapestry.</p><p>For example, say yo u are using <a class="external-link" href="http://getahead.org/dwr/" rel="nofollow">Direct Web Remoting</a>. You'll likely have the servlet path /dwr mapped to the Direct Web Remoting servlet.</p><p>You contribution would look like:</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<String> configuration) { @@ -490,8 +490,8 @@ Some components, notably Grid, Pallete a <div class="aui-message aui-message-info"> -Added in 5.3 | -Support for application folders was added in release 5.3. +Added in 5.3 + Support for application folders was added in release 5.3. </div><p>Setting this up is in two parts:</p><ul><li>Modifying the configuration of the <code><url-pattern></code> for the Tapestry filter to match the specified folder.</li><li>Identifying the folder name using a Tapestry symbol value contribution.</li></ul><p>So, if you wanted to run the Tapestry application inside folder <code>t5app</code>, you would modify your <code>web.xml</code> indicate the use of the folder:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> <pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"> <filter-mapping> <filter-name>app</filter-name> Modified: websites/production/tapestry/content/exploring-the-project.html ============================================================================== --- websites/production/tapestry/content/exploring-the-project.html (original) +++ websites/production/tapestry/content/exploring-the-project.html Mon Feb 12 03:22:44 2018 @@ -262,13 +262,13 @@ public class Index -<span class="gliffy-container" id="gliffy-container-24346949-8719" data-fullwidth="913" data-ceoid="24188263" data-edit="${diagramEditLink.getLinkUrl()}" data-full="${diagramZoomLink.getLinkUrl()}" data-filename="Templates and Parameters"> +<span class="gliffy-container" id="gliffy-container-24346949-7149" data-fullwidth="913" data-ceoid="24188263" data-edit="${diagramEditLink.getLinkUrl()}" data-full="${diagramZoomLink.getLinkUrl()}" data-filename="Templates and Parameters"> - <map id="gliffy-map-24346949-8526" name="gliffy-map-24346949-8526"></map> + <map id="gliffy-map-24346949-7596" name="gliffy-map-24346949-7596"></map> - <img class="gliffy-image gliffy-image-border" id="gliffy-image-24346949-8719" width="304" height="300" data-full-width="913" data-full-height="901" src="https://cwiki.apache.org/confluence/download/attachments/24188263/Templates%20and%20Parameters.png?version=2&modificationDate=1371888025000&api=v2" alt="Templates and Parameters" usemap="#gliffy-map-24346949-8526"> + <img class="gliffy-image gliffy-image-border" id="gliffy-image-24346949-7149" width="304" height="300" data-full-width="913" data-full-height="901" src="https://cwiki.apache.org/confluence/download/attachments/24188263/Templates%20and%20Parameters.png?version=2&modificationDate=1371888025000&api=v2" alt="Templates and Parameters" usemap="#gliffy-map-24346949-7596"> - <map class="gliffy-dynamic" id="gliffy-dynamic-map-24346949-8719" name="gliffy-dynamic-map-24346949-8719"></map> + <map class="gliffy-dynamic" id="gliffy-dynamic-map-24346949-7149" name="gliffy-dynamic-map-24346949-7149"></map> </span> Modified: websites/production/tapestry/content/forms-and-validation.html ============================================================================== --- websites/production/tapestry/content/forms-and-validation.html (original) +++ websites/production/tapestry/content/forms-and-validation.html Mon Feb 12 03:22:44 2018 @@ -120,11 +120,11 @@ <p> </p><p>Tapestry provides support for creating and rendering forms, populating their fields, and validating user input. For simple cases, input validation is declarative, meaning you simply tell Tapestry what validations to apply to a given field, and it takes care of it on the server and (optionally) on the client as well. In addition, you can provide event handler methods in your page or component classes to handle more complex validation scenarios.</p><p>Finally, Tapestry not only makes it easy to present errors messages to the user, but it can also automatically highlight form fields when validation fails.</p><p><strong>Contents</strong></p><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1518351747629 {padding: 0px;} -div.rbtoc1518351747629 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1518351747629 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1518405706808 {padding: 0px;} +div.rbtoc1518405706808 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1518405706808 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1518351747629"> +/*]]>*/</style></p><div class="toc-macro rbtoc1518405706808"> <ul class="toc-indentation"><li>Related Articles</li></ul> <ul><li><a href="#FormsandValidation-TheFormComponent">The Form Component</a></li><li><a href="#FormsandValidation-FormEvents">Form Events</a></li><li><a href="#FormsandValidation-HandlingEvents">Handling Events</a></li><li><a href="#FormsandValidation-TrackingValidationErrors">Tracking Validation Errors</a></li><li><a href="#FormsandValidation-StoringDataBetweenRequests">Storing Data Between Requests</a></li><li><a href="#FormsandValidation-ConfiguringFieldsandLabels">Configuring Fields and Labels</a></li><li><a href="#FormsandValidation-CentralizingValidationwith@Validate">Centralizing Validation with @Validate</a></li><li><a href="#FormsandValidation-ServerSideValidation">Server Side Validation</a></li><li><a href="#FormsandValidation-CustomizingValidationMessages">Customizing Validation Messages</a> <ul class="toc-indentation"><li><a href="#FormsandValidation-CustomizingValidationMessagesforBeanEditForm">Customizing Validation Messages for BeanEditForm</a></li></ul> @@ -245,8 +245,8 @@ ssn-regexp-message=Social security numbe <div class="aui-message aui-message-info"> -Added in 5.2 | -  +Added in 5.2 +   </div><p>Lists of validators can be combined into <em>validation macros</em>. This mechanism is convenient for ensuring consistent validation rules across an application. To create a validation macro, just contribute to the ValidatorMacro Service in your module class (normally AppModule.java), by adding a new entry to the configuration object, as shown below. The first parameter is the name of your macro, the second is a comma-separated list of validators:</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(ValidatorMacro.class) public static void combinePasswordValidators(MappedConfiguration<String, String> configuration) { Modified: websites/production/tapestry/content/general-questions.html ============================================================================== --- websites/production/tapestry/content/general-questions.html (original) +++ websites/production/tapestry/content/general-questions.html Mon Feb 12 03:22:44 2018 @@ -78,11 +78,11 @@ <div id="content"> <div id="ConfluenceContent"><h2 id="GeneralQuestions-GeneralQuestions">General Questions</h2><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1518351730541 {padding: 0px;} -div.rbtoc1518351730541 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1518351730541 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1518405691837 {padding: 0px;} +div.rbtoc1518405691837 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1518405691837 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1518351730541"> +/*]]>*/</style></p><div class="toc-macro rbtoc1518405691837"> <ul class="toc-indentation"><li><a href="#GeneralQuestions-GeneralQuestions">General Questions</a> <ul class="toc-indentation"><li><a href="#GeneralQuestions-HowdoIgetstartedwithTapestry?">How do I get started with Tapestry?</a></li><li><a href="#GeneralQuestions-WhydoesTapestryusePrototype?WhynotinsertfavoriteJavaScriptlibraryhere?">Why does Tapestry use Prototype? Why not insert favorite JavaScript library here?</a></li><li><a href="#GeneralQuestions-WhydoesTapestryhaveitsownInversionofControlContainer?WhynotSpringorGuice?">Why does Tapestry have its own Inversion of Control Container? Why not Spring or Guice?</a></li><li><a href="#GeneralQuestions-HowdoIupgradefromTapestry4toTapestry5?">How do I upgrade from Tapestry 4 to Tapestry 5?</a></li><li><a href="#GeneralQuestions-HowdoIupgradefromoneversionofTapestry5toanother?">How do I upgrade from one version of Tapestry 5 to another?</a></li></ul> </li></ul> Modified: websites/production/tapestry/content/hibernate-user-guide.html ============================================================================== --- websites/production/tapestry/content/hibernate-user-guide.html (original) +++ websites/production/tapestry/content/hibernate-user-guide.html Mon Feb 12 03:22:44 2018 @@ -109,8 +109,8 @@ </p><div class="aui-message aui-message-info"> -Added in 5.2 | -  +Added in 5.2 +   </div>The default strategy for persisting Session State Objects is "session". Storing a Hibernate entity into a <HttpSession> is problematic because the stored entity is detached from the Hibernate session. Similar to @Persist("entity") you may use the "entity" persistence strategy to persist Hibernate entities as SSOs:<parameter ac:name="">java</parameter><plain-text-body>public class Index { @SessionState Modified: websites/production/tapestry/content/injection-in-detail.html ============================================================================== --- websites/production/tapestry/content/injection-in-detail.html (original) +++ websites/production/tapestry/content/injection-in-detail.html Mon Feb 12 03:22:44 2018 @@ -132,8 +132,8 @@ <div class="aui-message aui-message-info"> -Added in 5.3 | -ComponentResourceSelector is new as of release 5.3. It encapsulates a locale plus additional application-specific data used for skinning and/or themeing. +Added in 5.3 + ComponentResourceSelector is new as of release 5.3. It encapsulates a locale plus additional application-specific data used for skinning and/or themeing. </div><h2 id="InjectioninDetail-AssetInjectionProvider">Asset InjectionProvider</h2><p>Triggered by the @Path annotation: the Path value has symbols expanded, and is then converted to an Asset.</p><h2 id="InjectioninDetail-ServiceInjectionProvider">Service InjectionProvider</h2><p>Equivalent to the Service Lookup phase in an IoC layer injection.</p><h1 id="InjectioninDetail-@InjectServiceinComponents">@InjectService in Components</h1><p>You may use the @<a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/InjectService.html">InjectService</a> annotation on component fields.</p><p></p></div> </div> Modified: websites/production/tapestry/content/integrating-with-jpa.html ============================================================================== --- websites/production/tapestry/content/integrating-with-jpa.html (original) +++ websites/production/tapestry/content/integrating-with-jpa.html Mon Feb 12 03:22:44 2018 @@ -81,14 +81,14 @@ <div class="aui-message aui-message-info"> -Added in 5.3 | -  +Added in 5.3 +   </div><p>Tapestry provides a built-in integration with the Java Persistence API (JPA) through the <strong>Tapestry-jpa</strong> module. This module supersedes the 3rd-party <a class="external-link" href="http://www.tynamo.org/tapestry-jpa+guide/" rel="nofollow">Tynamo JPA module</a>.</p><p><strong>Contents</strong></p><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1518351748019 {padding: 0px;} -div.rbtoc1518351748019 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1518351748019 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1518405707335 {padding: 0px;} +div.rbtoc1518405707335 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1518405707335 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1518351748019"> +/*]]>*/</style></p><div class="toc-macro rbtoc1518405707335"> <ul class="toc-indentation"><li><a href="#IntegratingwithJPA-Downloading">Downloading</a> <ul class="toc-indentation"><li><a href="#IntegratingwithJPA-SelectingaJPAImplementation">Selecting a JPA Implementation</a></li></ul> </li><li><a href="#IntegratingwithJPA-ConfiguringJPA">Configuring JPA</a> Modified: websites/production/tapestry/content/integrating-with-spring-framework.html ============================================================================== --- websites/production/tapestry/content/integrating-with-spring-framework.html (original) +++ websites/production/tapestry/content/integrating-with-spring-framework.html Mon Feb 12 03:22:44 2018 @@ -110,11 +110,11 @@ <p>For integrating Spring Security into your application, see <a href="integrating-with-spring-framework.html">Integrating with Spring Framework</a>.</p><p><strong>Contents</strong></p><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1518351672409 {padding: 0px;} -div.rbtoc1518351672409 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1518351672409 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1518405638739 {padding: 0px;} +div.rbtoc1518405638739 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1518405638739 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1518351672409"> +/*]]>*/</style></p><div class="toc-macro rbtoc1518405638739"> <ul class="toc-indentation"><li>Related Articles</li></ul> <ul><li><a href="#IntegratingwithSpringFramework-SpringVersion">Spring Version</a></li><li><a href="#IntegratingwithSpringFramework-Usage">Usage</a> <ul class="toc-indentation"><li><a href="#IntegratingwithSpringFramework-Requireddependency">Required dependency</a></li><li><a href="#IntegratingwithSpringFramework-Updateyourweb.xmlfile">Update your web.xml file</a></li><li><a href="#IntegratingwithSpringFramework-AccessingtheSpringApplicationContext">Accessing the Spring Application Context</a></li><li><a href="#IntegratingwithSpringFramework-Injectingbeans">Injecting beans</a></li><li><a href="#IntegratingwithSpringFramework-InjectingTapestryservicesinSpringbeans">Injecting Tapestry services in Spring beans</a></li></ul> @@ -150,8 +150,8 @@ div.rbtoc1518351672409 li {margin-left: <div class="aui-message aui-message-info"> -Added in 5.2 | -If you have configured Spring to allow annotation-based injection, then you will be able to inject Tapestry services into your Spring Beans. +Added in 5.2 + If you have configured Spring to allow annotation-based injection, then you will be able to inject Tapestry services into your Spring Beans. This feature is only available when Spring ApplicationContext is not configured and loaded externally. Modified: websites/production/tapestry/content/javascript-rewrite-in-54.html ============================================================================== --- websites/production/tapestry/content/javascript-rewrite-in-54.html (original) +++ websites/production/tapestry/content/javascript-rewrite-in-54.html Mon Feb 12 03:22:44 2018 @@ -68,11 +68,11 @@ <div id="content"> <div id="ConfluenceContent"><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1518351702976 {padding: 0px;} -div.rbtoc1518351702976 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1518351702976 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1518405665745 {padding: 0px;} +div.rbtoc1518405665745 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1518405665745 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1518351702976"> +/*]]>*/</style></p><div class="toc-macro rbtoc1518405665745"> <ul class="toc-indentation"><li><a href="#JavaScriptRewritein5.4-TapestryandJavaScript">Tapestry and JavaScript</a></li><li><a href="#JavaScriptRewritein5.4-TapestryJavaScriptLimitations(through5.3)">Tapestry JavaScript Limitations (through 5.3)</a> <ul class="toc-indentation"><li><a href="#JavaScriptRewritein5.4-DependenceonPrototype/Scriptaculous">Dependence on Prototype/Scriptaculous</a></li><li><a href="#JavaScriptRewritein5.4-LackofDocumentation">Lack of Documentation</a></li><li><a href="#JavaScriptRewritein5.4-LackofModuleStructure">Lack of Module Structure</a></li><li><a href="#JavaScriptRewritein5.4-ComplexInitialization">Complex Initialization</a></li></ul> </li><li><a href="#JavaScriptRewritein5.4-JavaScriptImprovementsfor5.4">JavaScript Improvements for 5.4</a> Modified: websites/production/tapestry/content/legacy-javascript.html ============================================================================== --- websites/production/tapestry/content/legacy-javascript.html (original) +++ websites/production/tapestry/content/legacy-javascript.html Mon Feb 12 03:22:44 2018 @@ -266,15 +266,15 @@ public class MyComponent <div class="aui-message aui-message-info"> -Added in 5.1.0.2 | -  +Added in 5.1.0.2 +   </div><p>In production mode, Tapestry automatically <em>combines</em> JavaScript libraries. A single request (for a <em>virtual asset</em>) will retrieve the combined content of all referenced JavaScript library files.</p><p>Note: starting with Tapestry 5.2, JavaScript libraries are only combined if they are part of a JavaScript Stack (see below).</p><p>This is a very useful feature, as it reduces the number of requests needed to present a page to the user. It can be disabled, however, by setting the SymbolConstants.COMBINE_SCRIPTS <a href="legacy-javascript.html">configuration symbol</a> to false in your application's module class (normally AppModule.java). By default it is enabled when in production mode and disabled otherwise.</p><p>As elsewhere, if the client browser supports gzip compression, the combined JavaScript will be compressed.</p><h1 id="LegacyJavaScript-MinifyingJavaScriptlibraries">Minifying JavaScript libraries</h1> <div class="aui-message aui-message-info"> -Added in 5.3 | -  +Added in 5.3 +   </div><p>In production mode, Tapestry can automatically <em>minify</em> (intelligently compresses) JavaScript libraries (and CSS) when the application starts up. This can significantly decrease the size of static content that the browser needs to download.</p><p>Minification is accomplished using the ResourceMinimizer service. A YUI Compressor-based implementation is available, but this can be overridden.</p><p>IMPORTANT NOTE: The tapestry-core module only provides the empty infrastructure for supporting minification; the actual logic is supplied in the tapestry-yuicompressor module. To use it, you'll need to update your dependencies to include this module.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Maven pom.xml (partial)</b></div><div class="codeContent panelContent pdl"> <pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><dependency> <groupId>org.apache.tapestry</groupId> @@ -331,8 +331,8 @@ Tapestry also works well with other Java <div class="aui-message aui-message-info"> -Added in 5.2 | -  +Added in 5.2 +   </div><p>Tapestry allows you to define groups of related JavaScript libraries and stylesheets as "stacks". The built-in "core" stack is used to define the core JavaScript libraries needed by Tapestry (currently, this includes Prototype and Scriptaculous, as well as Tapestry-specific libraries). Other component libraries may define additional stacks for related sets of resources, for example, to bundle together some portion of the ExtJS or YUI libraries.</p><p>A <a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/javascript/JavaScriptStack.html">JavaScriptStack</a> can be thought of as a generalization of Tapestry 5.1's ClientInfrastructure, which exists now to define the "core" JavaScript stack.</p><p>JavaScript assets of a stack may (when enabled) be exposed to the client as a single URL (identifying the stack by name). The individual assets are combined into a single virtual asset, which is then streamed to the client.</p><p>To group several static resources together in a single stack, you must create a new implementation of the JavaScriptStack interface . This interface has four methods:</p><ul class="alternate"><li><strong>getStylesheets</strong> : This method will return a list of stylesheet files (StylesheetLink-type object) associated to this stack</li></ul><ul class="alternate"><li><strong>getJavaScriptLibraries</strong> : This method will return a list of javascript files (Asset-type object) associated to this stack</li></ul><ul class="alternate"><li><strong>getStacks</strong> : It is also possible to make a stack dependant of other stacks. All the stacks defined in this method will be loaded before the current stack.</li></ul><ul class="alternate"><li><strong>getInitialization</strong> : this method makes it possible to call a JavaScript initialization for the stack. Tapestry will automatically add this initialization to the page that imports the stacks.</li></ul><div class="code panel pdl" style=" border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>myStack.java</b></div><div class="codeContent panelContent pdl"> <pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">public class myStack implements JavaScriptStack { Modified: websites/production/tapestry/content/link-components-faq.html ============================================================================== --- websites/production/tapestry/content/link-components-faq.html (original) +++ websites/production/tapestry/content/link-components-faq.html Mon Feb 12 03:22:44 2018 @@ -105,8 +105,8 @@ <div class="aui-message aui-message-info"> -Added in 5.3 | -You may also bind a link component's {{parameters}} parameter; this is a Map of additional query parameters to add to the URL. The Map keys should be strings, and the Map values will be encoded to strings. Tapestry 5.3 also adds a literal map syntax to the [property expression language|TAPESTRY:Property Expressions]. +Added in 5.3 + You may also bind a link component's {{parameters}} parameter; this is a Map of additional query parameters to add to the URL. The Map keys should be strings, and the Map values will be encoded to strings. Tapestry 5.3 also adds a literal map syntax to the [property expression language|TAPESTRY:Property Expressions]. </div><h3 id="LinkComponentsFAQ-HowdoIcreateaLinkbacktothecurrentpagefromacomponent?">How do I create a Link back to the current page from a component?</h3><p>Sometimes it is useful to create a link back to the current page, but you don't always know the name of the page (the link may appear inside a deeply nested subcomponent). Fortunately, this is easy.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> Modified: websites/production/tapestry/content/page-and-component-classes-faq.html ============================================================================== --- websites/production/tapestry/content/page-and-component-classes-faq.html (original) +++ websites/production/tapestry/content/page-and-component-classes-faq.html Mon Feb 12 03:22:44 2018 @@ -110,13 +110,13 @@ public class DBImage -<span class="gliffy-container" id="gliffy-container-23527573-162" data-fullwidth="750" data-ceoid="23335008" data-edit="${diagramEditLink.getLinkUrl()}" data-full="${diagramZoomLink.getLinkUrl()}" data-filename="Class Loaders"> +<span class="gliffy-container" id="gliffy-container-23527573-206" data-fullwidth="750" data-ceoid="23335008" data-edit="${diagramEditLink.getLinkUrl()}" data-full="${diagramZoomLink.getLinkUrl()}" data-filename="Class Loaders"> - <map id="gliffy-map-23527573-1740" name="gliffy-map-23527573-1740"></map> + <map id="gliffy-map-23527573-6113" name="gliffy-map-23527573-6113"></map> - <img class="gliffy-image" id="gliffy-image-23527573-162" width="750" height="425" data-full-width="750" data-full-height="425" src="https://cwiki.apache.org/confluence/download/attachments/23335008/Class%20Loaders.png?version=4&modificationDate=1283534469000&api=v2" alt="Class Loaders" usemap="#gliffy-map-23527573-1740"> + <img class="gliffy-image" id="gliffy-image-23527573-206" width="750" height="425" data-full-width="750" data-full-height="425" src="https://cwiki.apache.org/confluence/download/attachments/23335008/Class%20Loaders.png?version=4&modificationDate=1283534469000&api=v2" alt="Class Loaders" usemap="#gliffy-map-23527573-6113"> - <map class="gliffy-dynamic" id="gliffy-dynamic-map-23527573-162" name="gliffy-dynamic-map-23527573-162"></map> + <map class="gliffy-dynamic" id="gliffy-dynamic-map-23527573-206" name="gliffy-dynamic-map-23527573-206"></map> </span> Modified: websites/production/tapestry/content/parallel-execution.html ============================================================================== --- websites/production/tapestry/content/parallel-execution.html (original) +++ websites/production/tapestry/content/parallel-execution.html Mon Feb 12 03:22:44 2018 @@ -84,8 +84,8 @@ </p><div class="aui-message aui-message-info"> -Added in 5.3 | -  +Added in 5.3 +   </div>The size of the task queue. When there are at least the core number of threads in the pool, tasks will be placed in the queue. If the queue is empty, more threads may be created (up to the maximum pool size). If the queue is full and all threads have been created, the task is rejected (and exception is thrown).<p>Defaults to 100.</p><p> </p><p></p></div> </div> Modified: websites/production/tapestry/content/property-expressions.html ============================================================================== --- websites/production/tapestry/content/property-expressions.html (original) +++ websites/production/tapestry/content/property-expressions.html Mon Feb 12 03:22:44 2018 @@ -138,8 +138,8 @@ mapKey : keyword | constant | propertyCh </p><div class="aui-message aui-message-info"> -Added in 5.3 | -Support for map literals was added in Tapestry 5.3. +Added in 5.3 + Support for map literals was added in Tapestry 5.3. </div>Notes:<ul><li>Whitespace is ignored.</li><li>Integers and decimals may have a leading sign ('+' or '-').</li><li>Constants are in base 10 (octal and hex notation is not yet supported). Decimals may contain a decimal point (exponent notation not yet supported).</li><li>Literal strings are enclosed in single quotes.</li><li>The <code>rangeOp</code> creates a range object that will iterate between the two values. The upper and lower bounds may be literal integers, or property expressions.</li><li>An identifier by itself is a property name. An identifier with parenthesis is a method invocation.</li><li>Property names, method names, and keywords are case-insensitive.</li><li>'this' is the root object (i.e., the containing component).</li><li>The <code>not</code> operator coerces the expression to a <code>boolean</code> (so it can be used on strings, numbers, etc.).</li><li>Method matching is based on method name and number of parameters, but not parameter types. The <a href="prope rty-expressions.html">TypeCoercer</a> service is used to convert parameters to the correct type to be passed into the method.</li></ul><h2 id="PropertyExpressions-Examples">Examples</h2><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Example</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Notes</p></th></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Keyword</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>this</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Keyword</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Property Name</p></th><td colspan="1" rowspan="1" class="confluen ceTd"><p>userName</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Calls getUserName() or setUserName, depending on context</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Property Chain</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>user.address.city</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Calls getUser().getAddress().getCity() or getUser().getAddress().setCity(), depending on context</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Property Chain</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>user?.name</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Calls getUser() and, if the result is not null, calls getName() on the result</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Method Invocation</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>groupList.size()</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>calls getGroupList().size( )</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Method Invocation</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>members.findById(<a class="external-link" href="http://user.id" rel="nofollow">user.id</a>)?.name</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Calls getMembers().findById(getUser().getId())?.getName() (unless findById returns null)</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Range</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>1..10</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Iterates between integers 1 and 10</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Range</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>1..groupList.size()</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Iterates between 1 and the result of getGroupList().size()</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Literal String</p></t h><td colspan="1" rowspan="1" class="confluenceTd"><p>'Beer is proof that God loves us and wants us to be happy.'</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Use single quotes</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>List</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>[<a class="external-link" href="http://user.name" rel="nofollow">user.name</a>, user.email, user.phone]</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Not Operator</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>! user.deleted</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>the boolean negation of getUser().getDeleted()</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Not, Coerced</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>! user.middleName</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true only if ge tUser.getMiddleName() returns null or an empty string</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Map</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>{ 'framework' : 'Tapestry', 'version' : version }</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Keys are string literals (in single quotes), but could be properties as well</p></td></tr></tbody></table></div></div> </div> Modified: websites/production/tapestry/content/registry-startup.html ============================================================================== --- websites/production/tapestry/content/registry-startup.html (original) +++ websites/production/tapestry/content/registry-startup.html Mon Feb 12 03:22:44 2018 @@ -88,8 +88,8 @@ </p><div class="aui-message aui-message-info"> -Added in 5.2 | -  +Added in 5.2 +   </div>Instead of making contributions to the RegistryStartup service configuration you can provide startup methods inside your modules. A startup method is a static or instance method of a module annotated with @<a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Startup.html">Startup</a> annotation. Each module is allowed to contain several startup methods.<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> <pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">public class MyModule { Modified: websites/production/tapestry/content/release-notes-50.html ============================================================================== --- websites/production/tapestry/content/release-notes-50.html (original) +++ websites/production/tapestry/content/release-notes-50.html Mon Feb 12 03:22:44 2018 @@ -78,11 +78,11 @@ <div id="content"> <div id="ConfluenceContent"><p>This is the consolidated list of changes between Tapestry versions 5.0.3 and 5.0.19. Before upgrading, be sure to review the <a href="release-notes-50.html">Release Notes 5.0</a> instructions.</p><p><strong>Contents</strong></p><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1518351746279 {padding: 0px;} -div.rbtoc1518351746279 ul {list-style: disc;margin-left: 0px;padding-left: 5px;} -div.rbtoc1518351746279 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1518405705611 {padding: 0px;} +div.rbtoc1518405705611 ul {list-style: disc;margin-left: 0px;padding-left: 5px;} +div.rbtoc1518405705611 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1518351746279"> +/*]]>*/</style></p><div class="toc-macro rbtoc1518405705611"> <ul class="toc-indentation"><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.19">Tapestry Version 5.0.19</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.18">Tapestry Version 5.0.18</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.17">Tapestry Version 5.0.17</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.16">Tapestry Version 5.0.16</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.15">Tapestry Version 5.0.15</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.14">Tapestry Version 5.0.14</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.13">Tapestry Version 5.0.13</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.12">Tapestry Version 5.0.12</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.11">Tapestry Version 5.0.11</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.10">Tapestry Version 5.0.10</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.9">Tapestry Version 5.0.9</a></li><li><a href="#ReleaseNot es5.0-TapestryVersion5.0.8">Tapestry Version 5.0.8</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.7">Tapestry Version 5.0.7</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.6">Tapestry Version 5.0.6</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.5">Tapestry Version 5.0.5</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.4">Tapestry Version 5.0.4</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.3">Tapestry Version 5.0.3</a></li></ul> [... 3 lines stripped ...]