Author: buildbot Date: Sun Jun 19 15:11:52 2022 New Revision: 1079887 Log: Production update by buildbot for tapestry
Added: websites/production/tapestry/content/cors-cross-origin-resource-sharing-support-582.html websites/production/tapestry/content/release-notes-582.html Modified: websites/production/tapestry/content/cache/main.pageCache websites/production/tapestry/content/configuration.html websites/production/tapestry/content/documentation.html websites/production/tapestry/content/release-notes.html Modified: websites/production/tapestry/content/cache/main.pageCache ============================================================================== Binary files - no diff available. Modified: websites/production/tapestry/content/configuration.html ============================================================================== --- websites/production/tapestry/content/configuration.html (original) +++ websites/production/tapestry/content/configuration.html Sun Jun 19 15:11:52 2022 @@ -214,11 +214,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.rbtoc1655111504722 {padding: 0px;} -div.rbtoc1655111504722 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1655111504722 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1655651502246 {padding: 0px;} +div.rbtoc1655651502246 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1655651502246 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1655111504722"> +/*]]>*/</style></p><div class="toc-macro rbtoc1655651502246"> <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><li><a href="#Configuration-SegregatingApplicationsIntoFolders">Segregating Applications Into Folders</a></li></ul> </div><h2 id="Configuration-XMLconfiguration(web.xml)">XML configuration (web.xml)</h2><p>Tapestry runs on top of the standard Java Servlet API. To the servlet container, such as Tomcat, Tapestry appears as a <em>servlet filter</em>. This gives Tapestry great flexibility in matching URLs without requiring lots of XML configuration.</p><p>Although most configuration is done with Java, a small but necessary amount of configuration occurs inside the servlet deployment descriptor, WEB-INF/web.xml. Most of the configuration is boilerplate, nearly the same for all applications.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>web.xml (partial)</b></div><div class="codeContent panelContent pdl"> <pre><code class="language-xml"><!DOCTYPE web-app @@ -522,7 +522,56 @@ div.rbtoc1655111504722 li {margin-left: <div class="param-body"></div> -</div><p><strong>SymbolConstants.SESSION_LOCKING_ENABLED</strong> – 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">tapestry.start-page-name</h3><p><strong>SymbolConstants.START_PAGE_NAME</strong> – 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">tapestry.strict-css-url-rewriting</h3><p><stron g>SymbolConstants.STRICT_CSS_URL_REWRITING</strong> – 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">tapestry.supported-locales</h3><p><strong>SymbolConstants.SUPPORTED_LOCALES</strong> – 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-r equests">tapestry.suppress-redirect-from-action-requests</h3> +</div><p><strong>SymbolConstants.SESSION_LOCKING_ENABLED</strong> – 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">tapestry.start-page-name</h3><p><strong>SymbolConstants.START_PAGE_NAME</strong> – 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">tapestry.strict-css-url-rewriting</h3><p><stron g>SymbolConstants.STRICT_CSS_URL_REWRITING</strong> – 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">tapestry.supported-locales</h3><p><strong>SymbolConstants.SUPPORTED_LOCALES</strong> – 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.cors-enabled">tapestry.cors-ena bled</h3><p><strong>SymbolConstants.CORS_ENABLED</strong> – Defines whether the CORS (Cross-Origing Resource Sharing) support should be enabled or not. Default value is <code>false</code>. If you set this to <code>true</code>,you should also set at least <code>Symbol.CORS_ALLOWED_ORIGINS</code> too.</p> + +<div class="aui-message aui-message-info macro-since"><b class="param-since">Added in 5.8.2</b> + + + <div class="param-body"></div> + +</div><h3 id="Configuration-tapestry.cors-allowed-origins">tapestry.cors-allowed-origins</h3><p><strong>SymbolConstants.CORS_ALLOWED_ORIGINS</strong> – Comma-delimited of origins allowed for CORS. The special value * means allowing all origins.  This is used by the default implementation of <code>CorsHandlerHelper.getAllowedOrigin(HttpServletRequest)</code>. Default value is the empty string (i.e. no origins allowed and CORS actually disabled).</p> + +<div class="aui-message aui-message-info macro-since"><b class="param-since">Added in 5.8.2</b> + + + <div class="param-body"></div> + +</div><h3 id="Configuration-tapestry.cors-allow-credentials">tapestry.cors-allow-credentials</h3><p><strong>SymbolConstants.CORS_ALLOW_CREDENTIALS</strong> – Boolean value defining whether the <code>Access-Control-Allow-Credentials</code> HTTP header should be set automatically in the response for CORS requests. Default value is <code>false</code>. This is used by the default implementation of <code>CorsHandlerHelper.configureCredentials(HttpServletResponse)</code>.</p> + +<div class="aui-message aui-message-info macro-since"><b class="param-since">Added in 5.8.2</b> + + + <div class="param-body"></div> + +</div><h3 id="Configuration-tapestry.cors-allow-methods">tapestry.cors-allow-methods</h3><p><strong>SymbolConstants.CORS_ALLOW_METHODS</strong> – Value to be used in the <code>Access-Control-Allow-Methods</code> in CORS preflight request responses. This is used by the default implementation of <code>CorsHandlerHelper.configureMethods(HttpServletResponse)</code>. Default value is <code>GET,HEAD,PUT,PATCH,POST,DELETE</code>.</p> + +<div class="aui-message aui-message-info macro-since"><b class="param-since">Added in 5.8.2</b> + + + <div class="param-body"></div> + +</div><h3 id="Configuration-tapestry.cors-allowed-headers">tapestry.cors-allowed-headers</h3><p><strong>SymbolConstants.CORS_ALLOWED_HEADERS</strong> – Value to be used in the <code>Access-Control-Allow-Headers</code> in CORS preflight request responses. This is used by the default implementation of <code>CorsHandlerHelper.configureAllowedHeaders(HttpServletResponse)</code>, which only sets the header if the value isn't empty. Default value is the empty string.</p> + +<div class="aui-message aui-message-info macro-since"><b class="param-since">Added in 5.8.2</b> + + + <div class="param-body"></div> + +</div><h3 id="Configuration-tapestry.cors-expose-headers">tapestry.cors-expose-headers</h3><p><strong>SymbolConstants.CORS_EXPOSE_HEADERS</strong> – Value to be used in the <code>Access-Control-Expose-Headers</code> in CORS preflight request responses. This is used by the default implementation of <code>CorsHandlerHelper.configureExposeHeaders(HttpServletResponse)</code>, which only sets the header if the value isn't empty. Default value is the empty string.</p> + +<div class="aui-message aui-message-info macro-since"><b class="param-since">Added in 5.8.2</b> + + + <div class="param-body"></div> + +</div><h3 id="Configuration-tapestry.cors-max-age">tapestry.cors-max-age</h3><p><strong>SymbolConstants.CORS_MAX_AGE</strong> – Value to be used in the <code>Access-Control-Max-Age</code> in CORS preflight request responses. This is used by the default implementation of <code>CorsHandlerHelper.configureMaxAge(HttpServletResponse)</code>, which only sets the header if the value isn't empty. Default value is the empty string.</p> + +<div class="aui-message aui-message-info macro-since"><b class="param-since">Added in 5.8.2</b> + + + <div class="param-body"></div> + +</div><h3 id="Configuration-tapestry.suppress-redirect-from-action-requests">tapestry.suppress-redirect-from-action-requests</h3> <div class="aui-message aui-message-warning macro-deprecated"><b class="param-deprecated">Deprecated since 5.2</b> Added: websites/production/tapestry/content/cors-cross-origin-resource-sharing-support-582.html ============================================================================== --- websites/production/tapestry/content/cors-cross-origin-resource-sharing-support-582.html (added) +++ websites/production/tapestry/content/cors-cross-origin-resource-sharing-support-582.html Sun Jun 19 15:11:52 2022 @@ -0,0 +1,248 @@ +<!DOCTYPE html> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<html> +<head> + <meta http-equiv="content-type" content="text/html; charset=utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="keywords" content="tapestry, apache, apache tapestry, framework, java, web, component, open source, application, dynamic, scalable, robust, servlet"> + <meta name="description" content="Apache Tapestry is a open-source component-oriented framework for creating dynamic, robust, highly scalable web applications in Java. Tapestry complements and builds upon the standard Java Servlet API, and so it works in any servlet container or application server."> + + <title> + CORS (Cross-Origin Resource Sharing) Support (5.8.2+) - Apache Tapestry + </title> + + <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/images/apache-tapestry-icon-144.png"> + <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/images/apache-tapestry-icon-114.png"> + <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/images/apache-tapestry-icon-72.png"> + <link rel="apple-touch-icon-precomposed" href="/images/apache-tapestry-icon-57.png"> + <link rel="shortcut icon" href="/images/apache-tapestry-icon-32.png"> + + <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap"> + <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"> + <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css"> + <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css"> + <link rel="stylesheet" href="/styles/main.css"> + + <script type="text/javascript"> + if (window.location.protocol === 'http:' && window.location.hostname !== 'localhost') { + window.location = window.location.href.replace('http://', 'https://'); + } + </script> + + <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous" defer></script> + <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous" defer></script> + <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous" defer></script> + <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js" defer></script> + <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js" defer></script> + + <script type="text/javascript"> + window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; + ga('create', 'UA-400821-1', 'auto'); + ga('send', 'pageview'); + </script> + <script async src="https://www.google-analytics.com/analytics.js"></script> +</head> +<body> + <!-- /// Navigation Start --> + <div id="navigation"><p><header> + <div class="container-fluid"> + <div class="row"> + <div class="col-12"> + <nav class="navbar navbar-expand-xl navbar-light justify-content-between"> + <a class="navbar-brand" href="/index.html"> + <img src="/images/apache-tapestry-icon-dark.svg" width="60" alt="Apache Tapestry" title="Apache Tapestry"> + <span>apache tapestry</span> + </a> + <button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + <div class="collapse navbar-collapse" id="navbarCollapse"> + <ul class="navbar-nav mx-auto"><li class="nav-item"> + <a class="nav-link active" href="/getting-started.html">Getting Started</a> + </li><li class="nav-item"> + <a class="nav-link active" href="/documentation.html">Documentation</a> + </li><li class="nav-item"> + <a class="nav-link active" href="/download.html">Download</a> + </li><li class="nav-item dropdown"> + <a class="nav-link dropdown-toggle active" id="communityNavbarDropdown" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> + Community + </a> + <div class="dropdown-menu" aria-labelledby="communityNavbarDropdown"> + <a class="dropdown-item" href="/community.html">Mailing Lists</a> + <a class="dropdown-item" href="https://stackoverflow.com/questions/tagged/tapestry">StackOverflow</a> + <a class="dropdown-item" href="/support.html">Support</a> + <a class="dropdown-item" href="/community.html">Getting Involved</a> + <a class="dropdown-item" href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=217387551" title="Edit this page (requires approval, just ask on the mailing list)">Edit this page</a> + <div class="dropdown-divider"></div> + <a class="dropdown-item" href="https://twitter.com/ApacheTapestry">@ApacheTapestry</a> + <a class="dropdown-item" href="https://twitter.com/hashtag/tapestry5">#tapestry5</a> + </div> + </li><li class="nav-item dropdown"> + <a class="nav-link dropdown-toggle active" id="developmentNavbarDropdown" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> + Development + </a> + <div class="dropdown-menu" aria-labelledby="developmentNavbarDropdown"> + <a class="dropdown-item" href="https://gitbox.apache.org/repos/asf?p=tapestry-5.git">Source Code</a> + <a class="dropdown-item" href="https://issues.apache.org/jira/browse/TAP5">Issues</a> + </div> + </li><li class="nav-item dropdown"> + <a class="nav-link dropdown-toggle active" id="apacheNavbarDropdown" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> + Apache + </a> + <div class="dropdown-menu" aria-labelledby="apacheNavbarDropdown"> + <a class="dropdown-item" href="https://www.apache.org/">About Apache</a> + <a class="dropdown-item" href="https://apachecon.com/?ref=royale.apache.org">Events</a> + <a class="dropdown-item" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a> + <a class="dropdown-item" href="https://www.apache.org/licenses/LICENSE-2.0">License</a> + <a class="dropdown-item" href="https://www.apache.org/security/">Security</a> + <a class="dropdown-item" href="https://www.apache.org/foundation/thanks.html">Thanks!</a> + </div> + </li></ul> + <form enctype="application/x-www-form-urlencoded" method="get" class="form-inline" action="search.html"> + <input type="search" class="form-control search-input" name="q" placeholder="Search docs, issues, wikis and blogs" aria-label="Search"> + <button type="submit" class="d-none">Search</button> + </form> + </div> + </nav> + </div> + </div> + </div> +</header></p></div> + <!-- /// Navigation End --> + + <article> + <div class="container-fluid"> + <div class="container pt-5"> + <div class="row"> + <div class="col-12"> + <!-- /// Breadcrumb Start --> + <div id="breadcrumb" class="mb-2 text-small"> + <a href="index.html">Apache Tapestry</a> > <a href="documentation.html">Documentation</a> > <a href="user-guide.html">User Guide</a> > <a href="cors-cross-origin-resource-sharing-support-582.html">CORS (Cross-Origin Resource Sharing) Support (5.8.2+)</a> + </div> + <!-- /// Breadcrumb End --> + + <!-- /// Smallbanner Start --> + <div id="smallbanner"><h1 class="title" id="title">CORS (Cross-Origin Resource Sharing) Support (5.8.2+)</h1></div> + <!-- /// Smallbanner Start --> + + <!-- /// Content Start --> + <div id="content"> + <div id="ConfluenceContent"><h1 id="CORS(CrossOriginResourceSharing)Support(5.8.2+)-CORSSuppport">CORS Suppport</h1><p>Since 5.8.2, Tapestry (specifically tapestry-http, a dependency of tapestry-core) provides out-of-the-box <a class="external-link" href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS" rel="nofollow">CORS (Cross-origin resourse sharing)</a> support. It covers most scenarios with just configuration symbols while also allowing easy customization of almost all its logic. </p><p>CORS support isn't enabled by default.</p><p>The implementation is based around 3 services:</p><ol><li><code>CorsHandler</code> defines the overall logic, mostly around deciding whether the current request requires CORS processing and call the appropriate code to handle hit. The delegates almost all of the CORS processing logic to <code>CorsHandlerHelper</code>.</li><li><code>CorsHandlerHelper</code> implements logic for determining whether a CORS request if a pre-flight one, which HTTP headers to set and which values to use. It has a default implementation of this service that uses the configuration symbols described below.</li><li><code>CorsHttpServletRequestFilter</code> is both a service and <code>HttpServletRequestFilter</code> filter which is called on every incoming HTTP request and delegates the CORS processing to <code>CorsHandler</code> instances. The <code>CorsHttpServletRequestFilter</code> service has an ordered configuration of <code>CorsHandler</code> instances. The default <code>CorsHandler</code> implementation, contributed to be the last one, executes the CORS processing for every request.</li></ol><p>If you need to have dynamic logic for determining the allowed origins, how to set the HTTP headers in the response or defining whether a CORS request is pre-flight or not, you should advise, decorate or override the <code>CorsHandlerHelper</code> service.</p><p>If you want to exclude some requests from having CORS pro cessing on them, implement a <code>CorsHandler</code> which returns <code>CorsHandlerResult.CONTINUE_REQUEST_PROCESSING</code> (i.e. skip CORS processing) for the these requests and <code>CorsHandlerResult.CONTINUE_CORS_PROCESSING</code> for the ones you want CORS processing to happen. You should also contribute your <code>CorsHandler</code> implementation to the <code>CorsHttpServletRequestFilter</code>.</p><h2 id="CORS(CrossOriginResourceSharing)Support(5.8.2+)-Configuration">Configuration</h2><p>The <a href="ioc-symbols.html">configuration symbols</a> used by the Tapestry CORS support are defined as <code>TapestryHttpSymbolConstants</code> constants with aliases in <code>SymbolConstants</code>. </p><h3 id="CORS(CrossOriginResourceSharing)Support(5.8.2+)-tapestry.cors-enabled">tapestry.cors-enabled</h3><p><strong>SymbolConstants.CORS_ENABLED</strong> – Defines whether the CORS (Cross-Origing Resource Sharing) support should be enabled or not. Default value is <code>fals e</code>. If you set this to <code>true</code>,you should also set at least <code>Symbol.CORS_ALLOWED_ORIGINS</code> too.</p> + +<div class="aui-message aui-message-info macro-since"><b class="param-since">Added in 5.8.2</b> + + + <div class="param-body"></div> + +</div><h3 id="CORS(CrossOriginResourceSharing)Support(5.8.2+)-tapestry.cors-allowed-origins">tapestry.cors-allowed-origins</h3><p><strong>SymbolConstants.CORS_ALLOWED_ORIGINS</strong> – Comma-delimited of origins allowed for CORS. The special value * means allowing all origins.  This is used by the default implementation of <code>CorsHandlerHelper.getAllowedOrigin(HttpServletRequest)</code>. Default value is the empty string (i.e. no origins allowed and CORS actually disabled).</p> + +<div class="aui-message aui-message-info macro-since"><b class="param-since">Added in 5.8.2</b> + + + <div class="param-body"></div> + +</div><h3 id="CORS(CrossOriginResourceSharing)Support(5.8.2+)-tapestry.cors-allow-credentials">tapestry.cors-allow-credentials</h3><p><strong>SymbolConstants.CORS_ALLOW_CREDENTIALS</strong> – Boolean value defining whether the <code>Access-Control-Allow-Credentials</code> HTTP header should be set automatically in the response for CORS requests. Default value is <code>false</code>. This is used by the default implementation of <code>CorsHandlerHelper.configureCredentials(HttpServletResponse)</code>.</p> + +<div class="aui-message aui-message-info macro-since"><b class="param-since">Added in 5.8.2</b> + + + <div class="param-body"></div> + +</div><h3 id="CORS(CrossOriginResourceSharing)Support(5.8.2+)-tapestry.cors-allow-methods">tapestry.cors-allow-methods</h3><p><strong>SymbolConstants.CORS_ALLOW_METHODS</strong> – Value to be used in the <code>Access-Control-Allow-Methods</code> in CORS preflight request responses. This is used by the default implementation of <code>CorsHandlerHelper.configureMethods(HttpServletResponse)</code>. Default value is <code>GET,HEAD,PUT,PATCH,POST,DELETE</code>.</p> + +<div class="aui-message aui-message-info macro-since"><b class="param-since">Added in 5.8.2</b> + + + <div class="param-body"></div> + +</div><h3 id="CORS(CrossOriginResourceSharing)Support(5.8.2+)-tapestry.cors-allowed-headers">tapestry.cors-allowed-headers</h3><p><strong>SymbolConstants.CORS_ALLOWED_HEADERS</strong> – Value to be used in the <code>Access-Control-Allow-Headers</code> in CORS preflight request responses. This is used by the default implementation of <code>CorsHandlerHelper.configureAllowedHeaders(HttpServletResponse)</code>, which only sets the header if the value isn't empty. Default value is the empty string.</p> + +<div class="aui-message aui-message-info macro-since"><b class="param-since">Added in 5.8.2</b> + + + <div class="param-body"></div> + +</div><h3 id="CORS(CrossOriginResourceSharing)Support(5.8.2+)-tapestry.cors-expose-headers">tapestry.cors-expose-headers</h3><p><strong>SymbolConstants.CORS_EXPOSE_HEADERS</strong> – Value to be used in the <code>Access-Control-Expose-Headers</code> in CORS preflight request responses. This is used by the default implementation of <code>CorsHandlerHelper.configureExposeHeaders(HttpServletResponse)</code>, which only sets the header if the value isn't empty. Default value is the empty string.</p> + +<div class="aui-message aui-message-info macro-since"><b class="param-since">Added in 5.8.2</b> + + + <div class="param-body"></div> + +</div><h3 id="CORS(CrossOriginResourceSharing)Support(5.8.2+)-tapestry.cors-max-age">tapestry.cors-max-age</h3><p><strong>SymbolConstants.CORS_MAX_AGE</strong> – Value to be used in the <code>Access-Control-Max-Age</code> in CORS preflight request responses. This is used by the default implementation of <code>CorsHandlerHelper.configureMaxAge(HttpServletResponse)</code>, which only sets the header if the value isn't empty. Default value is the empty string.</p> + +<div class="aui-message aui-message-info macro-since"><b class="param-since">Added in 5.8.2</b> + + + <div class="param-body"></div> + +</div><p></p></div> + </div> + <!-- /// Content End --> + </div> + </div> + </div> + </div> + </article> + + <!-- /// Footer Start --> + <div id="footer"><p>Apache Tapestry, Tapestry, Apache, the Apache feather logo, and the Apache Tapestry project logo are trademarks of The Apache Software Foundation.</p><p><br clear="none"><footer class="py-3"> + <div class="container-fluid"> + <div class="container"> + <div class="row"> + <div class="col-4 col-lg-2"> + <span class="font-weight-bold">Apache Tapestry</span> + <ul><li><a href="index.html">Home</a></li><li><a href="download.html">Download</a></li><li><a href="about.html">Team</a></li><li><a href="https://www.apache.org/licenses/LICENSE-2.0">License</a></li></ul> + <span class="font-weight-bold">Documentation</span> + <ul><li><a href="introduction.html">Introduction</a></li><li><a href="principles.html">Principles</a></li><li><i class="fas fa-play"></i> <a href="getting-started.html">Getting Started</a></li><li><i class="fas fa-play"></i> <a href="user-guide.html">User Guide</a></li><li><i class="fas fa-book"></i> <a href="documentation.html">Docs</a></li><li><i class="fas fa-book"></i> <a href="component-reference.html">Component Reference</a></li><li><i class="fas fa-book"></i> <a href="current/apidocs">Apidocs</a></li><li><a href="frequently-asked-questions.html">FAQ</a></li></ul> + </div> + <div class="col-4 col-lg-2"> + <span class="font-weight-bold">Community</span> + <ul><li><i class="fas fa-envelope-open-text"></i> <a href="community.html">Mailing Lists</a></li><li><i class="fab fa-stack-overflow"> </i> <a href="https://stackoverflow.com/questions/tagged/tapestry">StackOverflow</a></li><li><a href="support.html">Support</a></li><li><a href="community.html">Getting Involved</a></li><li><a href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=217387551" title="Edit this page (requires approval, just ask on the mailing list)">Edit this page</a></li></ul> + <span class="font-weight-bold">Social</span> + <ul><li><i class="fab fa-twitter"></i> <a href="https://twitter.com/ApacheTapestry">@ApacheTapestry</a></li><li><i class="fas fa-hashtag"></i> <a href="https://twitter.com/hashtag/tapestry5">#tapestry5</a></li></ul> + <span class="font-weight-bold">Development</span> + <ul><li><i class="fab fa-git"></i> <a href="https://gitbox.apache.org/repos/asf?p=tapestry-5.git">Source Code</a></li><li><i class="fab fa-jira"></i> <a href="https://issues.apache.org/jira/browse/TAP5">Issues</a></li></ul> + </div> + <div class="col-4 col-lg-2"> + <span class="font-weight-bold">Apache</span> + <ul><li><a href="https://www.apache.org/">About Apache</a></li><li><a href="https://apachecon.com/?ref=royale.apache.org">Events</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li><li><a href="https://www.apache.org/licenses/LICENSE-2.0">License</a></li><li><a href="https://www.apache.org/security/">Security</a></li><li><a href="https://www.apache.org/foundation/thanks.html">Thanks!</a></li></ul> + </div> + <div class="col-md-12 col-lg-6 clearfix"> + <span class="font-weight-bold d-block">About us</span> + <p class="float-right ml-3 mb-0"><img src="images/apache-tapestry-icon-light.svg" width="100" alt="Apache Tapestry" title="Apache Tapestry"></p> + <p><a href="https://tapestry.apache.org/">Apache Tapestry™</a> is an open-source component-oriented framework for creating dynamic, robust, highly scalable web applications in Java.</p> + <p>Tapestry complements and builds upon the standard Java Servlet API, and so it works in any servlet container or application server.</p> + <p class="float-right ml-3 mb-0"><img src="images/apache-powered-by.svg" width="100" alt="Apache PoweredBy" title="Apache PoweredBy"></p> + <p> + <a href="https://tapestry.apache.org/">Apache Tapestry™</a>, <a href="https://www.apache.org/">Apache™</a> and the <a href="https://www.apache.org/foundation/press/kit/">Apache feather logo™</a> + are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners. + </p> + </div> + </div> + <div class="row"> + <div class="col-12"> + Copyright © 2020 The Apache Software Foundation, Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>. + </div> + </div> + </div> + </div> +</footer><br clear="none"></p><p><br clear="none"></p></div> + <!-- /// Footer End --> +</body> +</html> Modified: websites/production/tapestry/content/documentation.html ============================================================================== --- websites/production/tapestry/content/documentation.html (original) +++ websites/production/tapestry/content/documentation.html Sun Jun 19 15:11:52 2022 @@ -142,7 +142,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"><div style="float:right;margin-left:1em"><h2 id="Documentation-AllTopics">All Topics</h2><ul class="childpages-macro"><li><a href="introduction.html">Introduction</a></li><li><a href="getting-started.html">Getting Started</a></li><li><a href="principles.html">Principles</a></li><li><a href="tapestry-tutorial.html">Tapestry Tutorial</a><ul class="childpages-macro"><li><a href="dependencies-tools-and-plugins.html">Dependencies, Tools and Plugins</a></li><li><a href="creating-the-skeleton-application.html">Creating The Skeleton Application</a></li><li><a href="exploring-the-project.html">Exploring the Project</a></li><li><a href="implementing-the-hi-lo-guessing-game.html">Implementing the Hi-Lo Guessing Game</a></li><li><a href="using-beaneditform-to-create-user-forms.html">Using BeanEditForm To Create User Forms</a></li><li><a href="using-tapestry-with-hibernate.html">Using Tapestry With Hibernate</a></li></ul></li><li><a href="u ser-guide.html">User Guide</a><ul class="childpages-macro"><li><a href="supported-environments-and-versions.html">Supported Environments and Versions</a></li><li><a href="project-layout.html">Project Layout</a></li><li><a href="configuration.html">Configuration</a></li><li><a href="runtime-exceptions.html">Runtime Exceptions</a></li><li><a href="class-reloading.html">Class Reloading</a></li><li><a href="component-reference.html">Component Reference</a></li><li><a href="annotations.html">Annotations</a></li><li><a href="component-classes.html">Component Classes</a></li><li><a href="component-templates.html">Component Templates</a></li><li><a href="property-expressions.html">Property Expressions</a></li><li><a href="component-parameters.html">Component Parameters</a></li><li><a href="parameter-type-coercion.html">Parameter Type Coercion</a></li><li><a href="layout-component.html">Layout Component</a></li><li><a href="component-mixins.html">Component Mixins</a><ul class="childpages-mac ro"><li><a href="built-in-mixins.html">Built-in Mixins</a></li></ul></li><li><a href="page-navigation.html">Page Navigation</a></li><li><a href="localization.html">Localization</a></li><li><a href="page-life-cycle.html">Page Life Cycle</a></li><li><a href="request-processing.html">Request Processing</a></li><li><a href="component-rendering.html">Component Rendering</a></li><li><a href="component-events.html">Component Events</a></li><li><a href="url-rewriting.html">URL rewriting</a></li><li><a href="dom.html">DOM</a></li><li><a href="response-compression.html">Response Compression</a></li><li><a href="security.html">Security</a></li><li><a href="https.html">HTTPS</a></li><li><a href="content-type-and-markup.html">Content Type and Markup</a></li><li><a href="persistent-page-data.html">Persistent Page Data</a></li><li><a href="session-storage.html">Session Storage</a><ul class="childpages-macro"><li><a href="clustering-issues.html">Clustering Issues</a></li></ul></li><li><a href="inje ction.html">Injection</a></li><li><a href="environmental-services.html">Environmental Services</a></li><li><a href="css.html">CSS</a></li><li><a href="assets.html">Assets</a></li><li><a href="forms-and-validation.html">Forms and Validation</a></li><li><a href="beaneditform-guide.html">BeanEditForm Guide</a></li><li><a href="uploading-files.html">Uploading Files</a></li><li><a href="logging.html">Logging</a></li><li><a href="unit-testing-pages-or-components.html">Unit testing pages or components</a></li><li><a href="integration-testing.html">Integration Testing</a></li><li><a href="development-dashboard.html">Development Dashboard</a></li><li><a href="modules.html">Modules</a><ul class="childpages-macro"><li><a href="built-in-modules.html">Built In Modules</a></li><li><a href="third-party-modules.html">Third Party Modules</a></li></ul></li><li><a href="ioc.html">IOC</a><ul class="childpages-macro"><li><a href="tapestry-ioc-overview.html">Tapestry IoC Overview</a></li><li><a href="tap estry-ioc-modules.html">Tapestry IoC Modules</a></li><li><a href="defining-tapestry-ioc-services.html">Defining Tapestry IOC Services</a></li><li><a href="service-advisors.html">Service Advisors</a></li><li><a href="tapestry-ioc-decorators.html">Tapestry IoC Decorators</a></li><li><a href="tapestry-ioc-configuration.html">Tapestry IoC Configuration</a></li><li><a href="case-insensitivity.html">Case Insensitivity</a></li><li><a href="autoloading-modules.html">Autoloading Modules</a></li><li><a href="service-implementation-reloading.html">Service Implementation Reloading</a></li><li><a href="ordering-by-constraints.html">Ordering by Constraints</a></li><li><a href="symbols.html">Symbols</a></li><li><a href="chainbuilder-service.html">ChainBuilder Service</a></li><li><a href="pipelinebuilder-service.html">PipelineBuilder Service</a></li><li><a href="shadowbuilder-service.html">ShadowBuilder Service</a></li><li><a href="strategybuilder-service.html">StrategyBuilder Service</a></li><li>< a href="injection-in-detail.html">Injection in Detail</a></li><li><a href="object-providers.html">Object Providers</a></li><li><a href="service-serialization.html">Service Serialization</a></li><li><a href="type-coercion.html">Type Coercion</a></li><li><a href="starting-the-ioc-registry.html">Starting the IoC Registry</a></li><li><a href="registry-startup.html">Registry Startup</a></li><li><a href="parallel-execution.html">Parallel Execution</a></li><li><a href="logging-in-tapestry.html">Logging in Tapestry</a></li><li><a href="using-jsr-330-standard-annotations.html">Using JSR 330 standard annotations</a></li><li><a href="operation-tracker.html">Operation Tracker</a></li></ul></li><li><a href="hibernate-core.html">Hibernate - Core</a><ul class="childpages-macro"><li><a href="hibernate-core-conf.html">Hibernate - Core - Conf</a></li><li><a href="hibernate.html">Hibernate</a></li><li><a href="hibernate-user-guide.html">Hibernate User Guide</a></li></ul></li><li><a href="integrating-w ith-spring-framework.html">Integrating with Spring Framework</a></li><li><a href="bean-validation.html">Bean Validation</a></li><li><a href="component-report.html">Component Report</a></li><li><a href="aliases.html">Aliases</a></li><li><a href="integrating-with-jpa.html">Integrating with JPA</a></li><li><a href="client-side-javascript.html">Client-Side JavaScript</a><ul class="childpages-macro"><li><a href="javascript-modules.html">JavaScript Modules</a></li><li><a href="coffeescript.html">CoffeeScript</a></li><li><a href="typescript.html">TypeScript</a></li><li><a href="legacy-javascript.html">Legacy JavaScript</a></li><li><a href="ajax-and-zones.html">Ajax and Zones</a></li></ul></li><li><a href="rest-support-580.html">REST Support (5.8.0+)</a></li></ul></li><li><a href="cheat-sheets.html">Cheat Sheets</a><ul class="childpages-macro"><li><a href="application-module-class-cheat-sheet.html">Application Module Class Cheat Sheet</a></li><li><a href="component-cheat-sheet.html">Compone nt Cheat Sheet</a></li><li><a href="tapestry-for-jsf-users.html">Tapestry for JSF Users</a></li></ul></li><li><a href="cookbook.html">Cookbook</a><ul class="childpages-macro"><li><a href="default-parameter.html">Default Parameter</a></li><li><a href="overriding-exception-reporting.html">Overriding Exception Reporting</a></li><li><a href="error-page-recipe.html">Error Page Recipe</a></li><li><a href="supporting-informal-parameters.html">Supporting Informal Parameters</a></li><li><a href="component-libraries.html">Component Libraries</a></li><li><a href="switching-cases.html">Switching Cases</a></li><li><a href="enum-parameter-recipe.html">Enum Parameter Recipe</a></li><li><a href="extending-the-if-component.html">Extending the If Component</a></li><li><a href="meta-programming-page-content.html">Meta-Programming Page Content</a></li><li><a href="using-select-with-a-list.html">Using Select With a List</a></li><li><a href="ioc-cookbook.html">IoC cookbook</a><ul class="childpages-macro" ><li><a href="ioc-cookbook-basic-services-and-injection.html">IoC Cookbook - >Basic Services and Injection</a></li><li><a >href="ioc-cookbook-overriding-ioc-services.html">IoC Cookbook - Overriding >IoC Services</a></li><li><a href="ioc-cookbook-patterns.html">IoC Cookbook - >Patterns</a></li><li><a href="ioc-cookbook-service-configurations.html">IoC >cookbook - Service Configurations</a></li></ul></li><li><a >href="performance-and-clustering.html">Performance and >Clustering</a></li><li><a href="google-app-engine.html">Google App >Engine</a></li></ul></li><li><a >href="frequently-asked-questions.html">Frequently Asked Questions</a><ul >class="childpages-macro"><li><a href="general-questions.html">General >Questions</a></li><li><a href="templating-and-markup-faq.html">Templating and >Markup FAQ</a></li><li><a href="page-and-component-classes-faq.html">Page And >Component Classes FAQ</a></li><li><a >href="forms-and-form-components-faq.html">Forms and Form Components >FAQ</a></li><li><a href="beaned itform-faq.html">BeanEditForm FAQ</a></li><li><a href="link-components-faq.html">Link Components FAQ</a></li><li><a href="component-events-faq.html">Component Events FAQ</a></li><li><a href="javascript-faq.html">JavaScript FAQ</a></li><li><a href="ajax-components-faq.html">Ajax Components FAQ</a></li><li><a href="injection-faq.html">Injection FAQ</a></li><li><a href="tapestry-inversion-of-control-faq.html">Tapestry Inversion of Control FAQ</a></li><li><a href="security-faq.html">Security FAQ</a></li><li><a href="integration-with-existing-applications.html">Integration with existing applications</a></li><li><a href="request-processing-faq.html">Request Processing FAQ</a></li><li><a href="limitations.html">Limitations</a></li><li><a href="specific-errors-faq.html">Specific Errors FAQ</a></li><li><a href="hibernate-support-faq.html">Hibernate Support FAQ</a></li><li><a href="maven-support-faq.html">Maven Support FAQ</a></li><li><a href="release-upgrade-faq.html">Release Upgrade FAQ</a> </li></ul></li><li><a href="release-notes.html">Release Notes</a><ul class="childpages-macro"><li><a href="how-to-upgrade.html">How to Upgrade</a></li><li><a href="release-notes-50.html">Release Notes 5.0</a></li><li><a href="release-notes-51.html">Release Notes 5.1</a></li><li><a href="release-notes-52.html">Release Notes 5.2</a><ul class="childpages-macro"><li><a href="release-notes-520.html">Release Notes 5.2.0</a></li><li><a href="release-notes-521.html">Release Notes 5.2.1</a></li><li><a href="release-notes-522.html">Release Notes 5.2.2</a></li><li><a href="release-notes-523.html">Release Notes 5.2.3</a></li><li><a href="release-notes-524.html">Release Notes 5.2.4</a></li><li><a href="release-notes-525.html">Release Notes 5.2.5</a></li><li><a href="release-notes-526.html">Release Notes 5.2.6</a></li></ul></li><li><a href="release-notes-53.html">Release Notes 5.3</a></li><li><a href="release-notes-531.html">Release Notes 5.3.1</a></li><li><a href="release-notes-532.html">Release Notes 5.3.2</a></li><li><a href="release-notes-533.html">Release Notes 5.3.3</a></li><li><a href="release-notes-534.html">Release Notes 5.3.4</a></li><li><a href="release-notes-535.html">Release Notes 5.3.5</a></li><li><a href="release-notes-536.html">Release Notes 5.3.6</a></li><li><a href="release-notes-537.html">Release Notes 5.3.7</a></li><li><a href="release-notes-538.html">Release Notes 5.3.8</a></li><li><a href="release-notes-54.html">Release Notes 5.4</a></li><li><a href="release-notes-541.html">Release Notes 5.4.1</a></li><li><a href="release-notes-542.html">Release Notes 5.4.2</a></li><li><a href="release-notes-543.html">Release Notes 5.4.3</a></li><li><a href="release-notes-544.html">Release Notes 5.4.4</a></li><li><a href="release-notes-545.html">Release Notes 5.4.5</a></li><li><a href="release-notes-550.html">Release Notes 5.5.0</a></li><li><a href="release-notes-560.html">Release Notes 5.6.0</a></li><li><a href="release-notes-561.html">Release Notes 5.6.1</a></li><li> <a href="release-notes-562.html">Release Notes 5.6.2</a></li><li><a href="release-notes-563.html">Release Notes 5.6.3</a></li><li><a href="release-notes-570.html">Release Notes 5.7.0</a></li><li><a href="release-notes-571.html">Release Notes 5.7.1</a></li><li><a href="release-notes-572.html">Release Notes 5.7.2</a></li><li><a href="release-notes-564.html">Release Notes 5.6.4</a></li><li><a href="release-notes-573.html">Release Notes 5.7.3</a></li><li><a href="release-notes-580.html">Release Notes 5.8.0</a></li><li><a href="release-notes-581.html">Release Notes 5.8.1</a></li></ul></li><li><a href="javascript-rewrite-in-54.html">JavaScript Rewrite in 5.4</a></li><li><a href="support.html">Support</a></li><li><a href="developer-information.html">Developer Information</a><ul class="childpages-macro"><li><a href="building-tapestry-from-source.html">Building Tapestry from Source</a></li><li><a href="confluence-site-setup.html">Confluence Site Setup</a><ul class="childpages-macro"><li><a h ref="since-and-deprecated-user-macros.html">Since and Deprecated User Macros</a></li></ul></li><li><a href="developer-bible.html">Developer Bible</a></li><li><a href="release-process.html">Release Process</a></li><li><a href="the-tapestry-jail.html">The tapestry jail</a></li><li><a href="version-numbers.html">Version Numbers</a></li></ul></li></ul></div> + <div id="ConfluenceContent"><div style="float:right;margin-left:1em"><h2 id="Documentation-AllTopics">All Topics</h2><ul class="childpages-macro"><li><a href="introduction.html">Introduction</a></li><li><a href="getting-started.html">Getting Started</a></li><li><a href="principles.html">Principles</a></li><li><a href="tapestry-tutorial.html">Tapestry Tutorial</a><ul class="childpages-macro"><li><a href="dependencies-tools-and-plugins.html">Dependencies, Tools and Plugins</a></li><li><a href="creating-the-skeleton-application.html">Creating The Skeleton Application</a></li><li><a href="exploring-the-project.html">Exploring the Project</a></li><li><a href="implementing-the-hi-lo-guessing-game.html">Implementing the Hi-Lo Guessing Game</a></li><li><a href="using-beaneditform-to-create-user-forms.html">Using BeanEditForm To Create User Forms</a></li><li><a href="using-tapestry-with-hibernate.html">Using Tapestry With Hibernate</a></li></ul></li><li><a href="u ser-guide.html">User Guide</a><ul class="childpages-macro"><li><a href="supported-environments-and-versions.html">Supported Environments and Versions</a></li><li><a href="project-layout.html">Project Layout</a></li><li><a href="configuration.html">Configuration</a></li><li><a href="runtime-exceptions.html">Runtime Exceptions</a></li><li><a href="class-reloading.html">Class Reloading</a></li><li><a href="component-reference.html">Component Reference</a></li><li><a href="annotations.html">Annotations</a></li><li><a href="component-classes.html">Component Classes</a></li><li><a href="component-templates.html">Component Templates</a></li><li><a href="property-expressions.html">Property Expressions</a></li><li><a href="component-parameters.html">Component Parameters</a></li><li><a href="parameter-type-coercion.html">Parameter Type Coercion</a></li><li><a href="layout-component.html">Layout Component</a></li><li><a href="component-mixins.html">Component Mixins</a><ul class="childpages-mac ro"><li><a href="built-in-mixins.html">Built-in Mixins</a></li></ul></li><li><a href="page-navigation.html">Page Navigation</a></li><li><a href="localization.html">Localization</a></li><li><a href="page-life-cycle.html">Page Life Cycle</a></li><li><a href="request-processing.html">Request Processing</a></li><li><a href="component-rendering.html">Component Rendering</a></li><li><a href="component-events.html">Component Events</a></li><li><a href="url-rewriting.html">URL rewriting</a></li><li><a href="dom.html">DOM</a></li><li><a href="response-compression.html">Response Compression</a></li><li><a href="security.html">Security</a></li><li><a href="https.html">HTTPS</a></li><li><a href="content-type-and-markup.html">Content Type and Markup</a></li><li><a href="persistent-page-data.html">Persistent Page Data</a></li><li><a href="session-storage.html">Session Storage</a><ul class="childpages-macro"><li><a href="clustering-issues.html">Clustering Issues</a></li></ul></li><li><a href="inje ction.html">Injection</a></li><li><a href="environmental-services.html">Environmental Services</a></li><li><a href="css.html">CSS</a></li><li><a href="assets.html">Assets</a></li><li><a href="forms-and-validation.html">Forms and Validation</a></li><li><a href="beaneditform-guide.html">BeanEditForm Guide</a></li><li><a href="uploading-files.html">Uploading Files</a></li><li><a href="logging.html">Logging</a></li><li><a href="unit-testing-pages-or-components.html">Unit testing pages or components</a></li><li><a href="integration-testing.html">Integration Testing</a></li><li><a href="development-dashboard.html">Development Dashboard</a></li><li><a href="modules.html">Modules</a><ul class="childpages-macro"><li><a href="built-in-modules.html">Built In Modules</a></li><li><a href="third-party-modules.html">Third Party Modules</a></li></ul></li><li><a href="ioc.html">IOC</a><ul class="childpages-macro"><li><a href="tapestry-ioc-overview.html">Tapestry IoC Overview</a></li><li><a href="tap estry-ioc-modules.html">Tapestry IoC Modules</a></li><li><a href="defining-tapestry-ioc-services.html">Defining Tapestry IOC Services</a></li><li><a href="service-advisors.html">Service Advisors</a></li><li><a href="tapestry-ioc-decorators.html">Tapestry IoC Decorators</a></li><li><a href="tapestry-ioc-configuration.html">Tapestry IoC Configuration</a></li><li><a href="case-insensitivity.html">Case Insensitivity</a></li><li><a href="autoloading-modules.html">Autoloading Modules</a></li><li><a href="service-implementation-reloading.html">Service Implementation Reloading</a></li><li><a href="ordering-by-constraints.html">Ordering by Constraints</a></li><li><a href="symbols.html">Symbols</a></li><li><a href="chainbuilder-service.html">ChainBuilder Service</a></li><li><a href="pipelinebuilder-service.html">PipelineBuilder Service</a></li><li><a href="shadowbuilder-service.html">ShadowBuilder Service</a></li><li><a href="strategybuilder-service.html">StrategyBuilder Service</a></li><li>< a href="injection-in-detail.html">Injection in Detail</a></li><li><a href="object-providers.html">Object Providers</a></li><li><a href="service-serialization.html">Service Serialization</a></li><li><a href="type-coercion.html">Type Coercion</a></li><li><a href="starting-the-ioc-registry.html">Starting the IoC Registry</a></li><li><a href="registry-startup.html">Registry Startup</a></li><li><a href="parallel-execution.html">Parallel Execution</a></li><li><a href="logging-in-tapestry.html">Logging in Tapestry</a></li><li><a href="using-jsr-330-standard-annotations.html">Using JSR 330 standard annotations</a></li><li><a href="operation-tracker.html">Operation Tracker</a></li></ul></li><li><a href="hibernate-core.html">Hibernate - Core</a><ul class="childpages-macro"><li><a href="hibernate-core-conf.html">Hibernate - Core - Conf</a></li><li><a href="hibernate.html">Hibernate</a></li><li><a href="hibernate-user-guide.html">Hibernate User Guide</a></li></ul></li><li><a href="integrating-w ith-spring-framework.html">Integrating with Spring Framework</a></li><li><a href="bean-validation.html">Bean Validation</a></li><li><a href="component-report.html">Component Report</a></li><li><a href="aliases.html">Aliases</a></li><li><a href="integrating-with-jpa.html">Integrating with JPA</a></li><li><a href="client-side-javascript.html">Client-Side JavaScript</a><ul class="childpages-macro"><li><a href="javascript-modules.html">JavaScript Modules</a></li><li><a href="coffeescript.html">CoffeeScript</a></li><li><a href="typescript.html">TypeScript</a></li><li><a href="legacy-javascript.html">Legacy JavaScript</a></li><li><a href="ajax-and-zones.html">Ajax and Zones</a></li></ul></li><li><a href="rest-support-580.html">REST Support (5.8.0+)</a></li><li><a href="cors-cross-origin-resource-sharing-support-582.html">CORS (Cross-Origin Resource Sharing) Support (5.8.2+)</a></li></ul></li><li><a href="cheat-sheets.html">Cheat Sheets</a><ul class="childpages-macro"><li><a href="applicat ion-module-class-cheat-sheet.html">Application Module Class Cheat Sheet</a></li><li><a href="component-cheat-sheet.html">Component Cheat Sheet</a></li><li><a href="tapestry-for-jsf-users.html">Tapestry for JSF Users</a></li></ul></li><li><a href="cookbook.html">Cookbook</a><ul class="childpages-macro"><li><a href="default-parameter.html">Default Parameter</a></li><li><a href="overriding-exception-reporting.html">Overriding Exception Reporting</a></li><li><a href="error-page-recipe.html">Error Page Recipe</a></li><li><a href="supporting-informal-parameters.html">Supporting Informal Parameters</a></li><li><a href="component-libraries.html">Component Libraries</a></li><li><a href="switching-cases.html">Switching Cases</a></li><li><a href="enum-parameter-recipe.html">Enum Parameter Recipe</a></li><li><a href="extending-the-if-component.html">Extending the If Component</a></li><li><a href="meta-programming-page-content.html">Meta-Programming Page Content</a></li><li><a href="using-select -with-a-list.html">Using Select With a List</a></li><li><a href="ioc-cookbook.html">IoC cookbook</a><ul class="childpages-macro"><li><a href="ioc-cookbook-basic-services-and-injection.html">IoC Cookbook - Basic Services and Injection</a></li><li><a href="ioc-cookbook-overriding-ioc-services.html">IoC Cookbook - Overriding IoC Services</a></li><li><a href="ioc-cookbook-patterns.html">IoC Cookbook - Patterns</a></li><li><a href="ioc-cookbook-service-configurations.html">IoC cookbook - Service Configurations</a></li></ul></li><li><a href="performance-and-clustering.html">Performance and Clustering</a></li><li><a href="google-app-engine.html">Google App Engine</a></li></ul></li><li><a href="frequently-asked-questions.html">Frequently Asked Questions</a><ul class="childpages-macro"><li><a href="general-questions.html">General Questions</a></li><li><a href="templating-and-markup-faq.html">Templating and Markup FAQ</a></li><li><a href="page-and-component-classes-faq.html">Page And Componen t Classes FAQ</a></li><li><a href="forms-and-form-components-faq.html">Forms and Form Components FAQ</a></li><li><a href="beaneditform-faq.html">BeanEditForm FAQ</a></li><li><a href="link-components-faq.html">Link Components FAQ</a></li><li><a href="component-events-faq.html">Component Events FAQ</a></li><li><a href="javascript-faq.html">JavaScript FAQ</a></li><li><a href="ajax-components-faq.html">Ajax Components FAQ</a></li><li><a href="injection-faq.html">Injection FAQ</a></li><li><a href="tapestry-inversion-of-control-faq.html">Tapestry Inversion of Control FAQ</a></li><li><a href="security-faq.html">Security FAQ</a></li><li><a href="integration-with-existing-applications.html">Integration with existing applications</a></li><li><a href="request-processing-faq.html">Request Processing FAQ</a></li><li><a href="limitations.html">Limitations</a></li><li><a href="specific-errors-faq.html">Specific Errors FAQ</a></li><li><a href="hibernate-support-faq.html">Hibernate Support FAQ</a></ li><li><a href="maven-support-faq.html">Maven Support FAQ</a></li><li><a href="release-upgrade-faq.html">Release Upgrade FAQ</a></li></ul></li><li><a href="release-notes.html">Release Notes</a><ul class="childpages-macro"><li><a href="how-to-upgrade.html">How to Upgrade</a></li><li><a href="release-notes-50.html">Release Notes 5.0</a></li><li><a href="release-notes-51.html">Release Notes 5.1</a></li><li><a href="release-notes-52.html">Release Notes 5.2</a><ul class="childpages-macro"><li><a href="release-notes-520.html">Release Notes 5.2.0</a></li><li><a href="release-notes-521.html">Release Notes 5.2.1</a></li><li><a href="release-notes-522.html">Release Notes 5.2.2</a></li><li><a href="release-notes-523.html">Release Notes 5.2.3</a></li><li><a href="release-notes-524.html">Release Notes 5.2.4</a></li><li><a href="release-notes-525.html">Release Notes 5.2.5</a></li><li><a href="release-notes-526.html">Release Notes 5.2.6</a></li></ul></li><li><a href="release-notes-53.html">Release Notes 5.3</a></li><li><a href="release-notes-531.html">Release Notes 5.3.1</a></li><li><a href="release-notes-532.html">Release Notes 5.3.2</a></li><li><a href="release-notes-533.html">Release Notes 5.3.3</a></li><li><a href="release-notes-534.html">Release Notes 5.3.4</a></li><li><a href="release-notes-535.html">Release Notes 5.3.5</a></li><li><a href="release-notes-536.html">Release Notes 5.3.6</a></li><li><a href="release-notes-537.html">Release Notes 5.3.7</a></li><li><a href="release-notes-538.html">Release Notes 5.3.8</a></li><li><a href="release-notes-54.html">Release Notes 5.4</a></li><li><a href="release-notes-541.html">Release Notes 5.4.1</a></li><li><a href="release-notes-542.html">Release Notes 5.4.2</a></li><li><a href="release-notes-543.html">Release Notes 5.4.3</a></li><li><a href="release-notes-544.html">Release Notes 5.4.4</a></li><li><a href="release-notes-545.html">Release Notes 5.4.5</a></li><li><a href="release-notes-550.html">Release Notes 5.5.0</a></li><li><a href="release-notes-560.html">Release Notes 5.6.0</a></li><li><a href="release-notes-561.html">Release Notes 5.6.1</a></li><li><a href="release-notes-562.html">Release Notes 5.6.2</a></li><li><a href="release-notes-563.html">Release Notes 5.6.3</a></li><li><a href="release-notes-570.html">Release Notes 5.7.0</a></li><li><a href="release-notes-571.html">Release Notes 5.7.1</a></li><li><a href="release-notes-572.html">Release Notes 5.7.2</a></li><li><a href="release-notes-564.html">Release Notes 5.6.4</a></li><li><a href="release-notes-573.html">Release Notes 5.7.3</a></li><li><a href="release-notes-580.html">Release Notes 5.8.0</a></li><li><a href="release-notes-581.html">Release Notes 5.8.1</a></li><li><a href="release-notes-582.html">Release Notes 5.8.2</a></li></ul></li><li><a href="javascript-rewrite-in-54.html">JavaScript Rewrite in 5.4</a></li><li><a href="support.html">Support</a></li><li><a href="developer-information.html">Developer Information</a><ul class="childpages-macr o"><li><a href="building-tapestry-from-source.html">Building Tapestry from Source</a></li><li><a href="confluence-site-setup.html">Confluence Site Setup</a><ul class="childpages-macro"><li><a href="since-and-deprecated-user-macros.html">Since and Deprecated User Macros</a></li></ul></li><li><a href="developer-bible.html">Developer Bible</a></li><li><a href="release-process.html">Release Process</a></li><li><a href="the-tapestry-jail.html">The tapestry jail</a></li><li><a href="version-numbers.html">Version Numbers</a></li></ul></li></ul></div> <p>Welcome to the Tapestry 5 Documentation, a collection of guides to teach beginners the basics and help experienced developers deepen their understanding of Tapestry's power.</p><h1 id="Documentation-Highlights">Highlights</h1><p>These are the most useful starting points for common needs.</p><div class="table-wrap"><table class="table table-bordered table-responsive"><colgroup span="1"><col span="1"><col span="1"></colgroup><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a href="introduction.html">Introduction</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>An overview of Tapestry's general approach and philosophy</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a href="getting-started.html">Getting Started</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>A quick guide to creating your first Tapestry project, using Maven</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a href="tapestry-tutoria l.html">Tapestry Tutorial</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Picks up where <em>Getting Started</em> leaves off, explaining in greater detail how Tapestry works</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a href="user-guide.html">User Guide</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Detailed articles on every Tapestry feature</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a href="community.html">Community</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Getting support, mailing lists, JIRA, outside resources, and access to the source</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a href="cookbook.html">Cookbook</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Guides to doing common things with Tapestry</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><strong><a href="frequently-asked-questions.html">FAQ</a></stron g></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>A quick place to check for common problems and solutions</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a href="component-cheat-sheet.html">Component Cheat Sheet</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>A concise guide to component classes, methods and annotations</p></td></tr></tbody></table></div><h1 id="Documentation-APIandComponentReference">API and Component Reference</h1><div class="table-wrap"><table class="table table-bordered table-responsive"><colgroup span="1"><col span="1" style="width: 18.81%;"><col span="1" style="width: 9.02111%;"><col span="1" style="width: 9.02111%;"><col span="1" style="width: 9.02111%;"><col span="1" style="width: 9.78887%;"><col span="1" style="width: 9.78887%;"><col span="1" style="width: 9.78887%;"><col span="1" style="width: 9.78887%;"><col span="1" style="width: 14.9712%;"><col span="1"></colgroup><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>API (Javadoc):</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>5.0<sup>1</sup></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>5.1<sup>1</sup></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>5.2<sup>1</sup></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a class="external-link" href="http://tapestry.apache.org/5.3.7/apidocs/">5.3.8</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" href="http://tapestry.apache.org/5.4">5.4</a></td><td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" href="http://tapestry.apache.org/5.5.0">5.5</a></td><td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" href="http://tapestry.apache.org/5.6.3">5.6.3</a></td><td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" href="http://tapestry.apache.org/5.7.3">5.7.3</a></td><td colspan="1" rowspan="1" class="confluenceTd"><a class="external-lin k" href="http://tapestry.apache.org/current">5.8.1 (current)</a></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Component Reference:</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>5.0<sup>1</sup></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>5.1<sup>1</sup></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>5.2<sup>1</sup></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><em><span class="confluence-link">see 5.7.2</span></em></p></td><td colspan="1" rowspan="1" class="confluenceTd"><em>see 5.7.2</em></td><td colspan="1" rowspan="1" class="confluenceTd">see 5.7.2</td><td colspan="1" rowspan="1" class="confluenceTd">see 5.7.2</td><td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" href="https://tapestry.apache.org/component-reference.html">5.7.3</a></td><td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" href="https://tapestry.apache.org/component-reference.html">5.8.1</a></td> </tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Release Notes:</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p><a href="release-notes-50.html">5.0</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a href="release-notes-51.html">5.1</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a href="release-notes-52.html">5.2</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a href="release-notes-538.html">5.3.8</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><a href="release-notes-54.html">5.4</a></td><td colspan="1" rowspan="1" class="confluenceTd"><a href="release-notes-550.html">5.5</a></td><td colspan="1" rowspan="1" class="confluenceTd"><a href="release-notes-560.html">5.6</a></td><td colspan="1" rowspan="1" class="confluenceTd"><a href="release-notes-570.html">5.7.0</a></td><td colspan="1" rowspan="1" class="confluenceTd"><a href="release-notes-581.html">5.8.1</a></td></tr></tbody></table></div><p><sup>1< /sup> needs to be built manually from archived sources at <a class="external-link" href="http://archive.apache.org/dist/tapestry/">http://archive.apache.org/dist/tapestry/</a>.</p><h1 id="Documentation-UserGuide">User Guide</h1><p><span class="confluence-anchor-link" id="Documentation-userguide"></span>The <a href="user-guide.html">User Guide</a> consists of over 75 pages of detailed information on the concepts behind Tapestry and instructions on how to use this powerful tool. Highlights include:</p><ul><li class="confluence-link"><a href="client-side-javascript.html">Client-Side JavaScript</a> and <a href="ajax-and-zones.html">Ajax and Zones</a> describe Tapestry's built-in support for dynamic in-page behavior.</li><li><a href="integrating-with-spring-framework.html">Integrating with Spring Framework</a> describes how to integrate Spring into your Tapestry application.</li><li><a href="hibernate.html">Tapestry/Hibernate Integration Library</a> provides out-of-the-box support for us ing Hibernate 3.</li><li><a href="bean-validation.html">JSR 303: Bean Validation</a> shows how to use standard annotations for validation</li><li><a href="integration-testing.html">Integration Testing</a> shows how to test your application with Selenium.</li></ul><p><a href="user-guide.html">More topics</a>...</p><h1 id="Documentation-BlogsbyTapestryDevelopersandtheCommunity">Blogs by Tapestry Developers and the Community</h1><ul><li><a class="external-link" href="http://tapestryjava.blogspot.com/" rel="nofollow">Tapestry Central</a> was Howard Lewis Ship's blog from 2003-2013. As the creator of Tapestry, he provides valuable insights into Tapestry's latest features and future directions.</li><li><a class="external-link" href="https://web.archive.org/web/20160410090538/http://blog.tapestry5.de/" rel="nofollow">Igor Drobiazko's blog</a> (committer & PMC) contains guides on Tapestry 5 development (2009-2013).</li><li><a class="external-link" href="http://tawus.wordpress.com/" rel="nofollow">Java Magic</a> (by Taha Hafeez, committer) presents a series of tutorials illustrating some of the more advanced Tapestry and Plastic features and techniques (2011-2012).</li></ul><h1 id="Documentation-BooksonTapestry">Books on Tapestry</h1><p>There are at least 9 published <a href="books.html">books on Tapestry</a>, including three on Tapestry 5.</p><h1 id="Documentation-TapestryPresentations">Tapestry Presentations</h1><ul><li>Mark Shead's <a class="external-link" href="http://blog.markshead.com/900/tapestry-5-10-minute-demo/" rel="nofollow">10 Minute Demo</a>  (Video, 2011)</li><li>H. L. Ship's <a class="external-link" href="https://www.youtube.com/watch?v=5BGt7eMFC20" rel="nofollow">Tapestry 5.4 - Bootstrap-enhanced Exception Reporting</a> (Video, 2012)</li><li><a class="external-link" href="https://web.archive.org/web/20170302154020/http://blog.tapestry5.de/wp-content/uploads/2010/06/JSF-2.0-vs-Tapestry-5.pdf" rel="nofollow">JavaServer Faces 2.0 vs. Ta pestry 5</a> (PDF, 2010) A Head-to-Head Comparison by Igor Drobiazko at Jazoon 2010</li></ul><p><a href="presentations.html">More presentations</a> ...</p><h1 id="Documentation-TapestryWikis">Tapestry Wikis</h1><ul><li><a href="https://cwiki.apache.org/confluence/x/VCFkAQ">Documentation Source wiki</a> (Confluence) – the wiki used as the content editor for the official Tapestry documentation</li><li><a href="https://cwiki.apache.org/confluence/display/TAPESTRY5">Tapestry Community Wiki (legacy)</a> – read-only copy of Tapestry's old Moin Moin wiki containing a lot of user-generated information on different Tapestry use cases.</li></ul><h1 id="Documentation-Gettinghelp">Getting help</h1><p>The primary method of support is the <a href="mailing-lists.html">Tapestry Mailing Lists</a>.</p><p>In addition, there are occasionally questions and answers about Tapestry at <a class="external-link" href="http://stackoverflow.com/questions/tagged/tapestry" rel="nofollow">Stack Overflo w</a>.</p><h1 id="Documentation-TheDeveloperCorner">The Developer Corner</h1><p><a href="developer-information.html">Developer Information</a> gives information needed by the Tapestry developers</p><p></p><p></p><p></p></div>