Modified: websites/production/tapestry/content/key-features-v2.html ============================================================================== --- websites/production/tapestry/content/key-features-v2.html (original) +++ websites/production/tapestry/content/key-features-v2.html Sat Nov 26 13:17:27 2022 @@ -32,10 +32,10 @@ <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="/resources/bootstrap/bootstrap.min.css"> <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="/resources/fonts/fonts.css"> <link rel="stylesheet" href="/styles/main.css"> <script type="text/javascript"> @@ -46,7 +46,7 @@ <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="stylesheet" href="/resources/bootstrap/bootstrap.min.js"> <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> @@ -142,19 +142,19 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"><div class="row" id="features"><div class="col-sm-4"><h3 id="KeyFeatures-v2-JavaPower">Java Power</h3><div class="feature relief"><p>Tapestry pages and components are simple Java POJOs, with easy access to all Java language features and the vast Java ecosystem. Thanks to Java's advanced concurrency API, Tapestry handles requests <em>fast</em> without sacrificing security or stability.</p></div> + <div id="ConfluenceContent"><div class="row" id="features"><div class="col-sm-4"><h3 id="KeyFeaturesv2-JavaPower">Java Power</h3><div class="feature relief"><p>Tapestry pages and components are simple Java POJOs, with easy access to all Java language features and the vast Java ecosystem. Thanks to Java's advanced concurrency API, Tapestry handles requests <em>fast</em> without sacrificing security or stability.</p></div> </div> -<div class="col-sm-4"><h3 id="KeyFeatures-v2-ScriptingEase">Scripting Ease</h3><div class="feature relief"><p>Tapestry features <em>live class reloading</em>: change your Java code, refresh the browser and see the changes... instantly! Have your cake and eat it too: the speed and depth of Java, the agile development style of Ruby or Python.</p></div> +<div class="col-sm-4"><h3 id="KeyFeaturesv2-ScriptingEase">Scripting Ease</h3><div class="feature relief"><p>Tapestry features <em>live class reloading</em>: change your Java code, refresh the browser and see the changes... instantly! Have your cake and eat it too: the speed and depth of Java, the agile development style of Ruby or Python.</p></div> </div> -<div class="col-sm-4"><h3 id="KeyFeatures-v2-SuperProductivity">Super Productivity</h3><div class="feature relief"><p> Simple POJO classes, streamlined templates, live class reloading, state-of-the-art exception reporting, first-class Ajax support, and a big library of built-in components: Tapestry is designed from the ground up to give you great productivity.</p></div> +<div class="col-sm-4"><h3 id="KeyFeaturesv2-SuperProductivity">Super Productivity</h3><div class="feature relief"><p> Simple POJO classes, streamlined templates, live class reloading, state-of-the-art exception reporting, first-class Ajax support, and a big library of built-in components: Tapestry is designed from the ground up to give you great productivity.</p></div> </div>
Modified: websites/production/tapestry/content/key-features.html ============================================================================== --- websites/production/tapestry/content/key-features.html (original) +++ websites/production/tapestry/content/key-features.html Sat Nov 26 13:17:27 2022 @@ -32,10 +32,10 @@ <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="/resources/bootstrap/bootstrap.min.css"> <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="/resources/fonts/fonts.css"> <link rel="stylesheet" href="/styles/main.css"> <script type="text/javascript"> @@ -46,7 +46,7 @@ <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="stylesheet" href="/resources/bootstrap/bootstrap.min.js"> <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> Modified: websites/production/tapestry/content/layout-component.html ============================================================================== --- websites/production/tapestry/content/layout-component.html (original) +++ websites/production/tapestry/content/layout-component.html Sat Nov 26 13:17:27 2022 @@ -32,10 +32,10 @@ <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="/resources/bootstrap/bootstrap.min.css"> <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="/resources/fonts/fonts.css"> <link rel="stylesheet" href="/styles/main.css"> <script type="text/javascript"> @@ -46,7 +46,7 @@ <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="stylesheet" href="/resources/bootstrap/bootstrap.min.js"> <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> @@ -169,7 +169,7 @@ <span class="icon aui-icon content-type-page" title="Page">Page:</span> </div> <div class="details"> - <a href="component-classes.html">Component Classes</a> + <a href="page-and-component-classes-faq.html">Page And Component Classes FAQ</a> </div> @@ -178,7 +178,7 @@ <span class="icon aui-icon content-type-page" title="Page">Page:</span> </div> <div class="details"> - <a href="templating-and-markup-faq.html">Templating and Markup FAQ</a> + <a href="component-classes.html">Component Classes</a> </div> @@ -187,7 +187,7 @@ <span class="icon aui-icon content-type-page" title="Page">Page:</span> </div> <div class="details"> - <a href="page-and-component-classes-faq.html">Page And Component Classes FAQ</a> + <a href="templating-and-markup-faq.html">Templating and Markup FAQ</a> </div> Modified: websites/production/tapestry/content/legacy-javascript.html ============================================================================== --- websites/production/tapestry/content/legacy-javascript.html (original) +++ websites/production/tapestry/content/legacy-javascript.html Sat Nov 26 13:17:27 2022 @@ -32,10 +32,10 @@ <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="/resources/bootstrap/bootstrap.min.css"> <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="/resources/fonts/fonts.css"> <link rel="stylesheet" href="/styles/main.css"> <script type="text/javascript"> @@ -46,7 +46,7 @@ <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="stylesheet" href="/resources/bootstrap/bootstrap.min.js"> <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> @@ -178,7 +178,7 @@ <span class="icon aui-icon content-type-page" title="Page">Page:</span> </div> <div class="details"> - <a href="javascript-modules.html">JavaScript Modules</a> + <a href="typescript.html">TypeScript</a> </div> @@ -187,7 +187,7 @@ <span class="icon aui-icon content-type-page" title="Page">Page:</span> </div> <div class="details"> - <a href="typescript.html">TypeScript</a> + <a href="javascript-modules.html">JavaScript Modules</a> </div> Modified: websites/production/tapestry/content/limitations.html ============================================================================== --- websites/production/tapestry/content/limitations.html (original) +++ websites/production/tapestry/content/limitations.html Sat Nov 26 13:17:27 2022 @@ -32,10 +32,10 @@ <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="/resources/bootstrap/bootstrap.min.css"> <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="/resources/fonts/fonts.css"> <link rel="stylesheet" href="/styles/main.css"> <script type="text/javascript"> @@ -46,7 +46,7 @@ <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="stylesheet" href="/resources/bootstrap/bootstrap.min.js"> <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> @@ -143,11 +143,11 @@ <!-- /// Content Start --> <div id="content"> <div id="ConfluenceContent"><h1 id="Limitations-Limitations">Limitations</h1><h2 id="Limitations-Contents">Contents</h2><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1608762025197 {padding: 0px;} -div.rbtoc1608762025197 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1608762025197 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1669468450079 {padding: 0px;} +div.rbtoc1669468450079 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1669468450079 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1608762025197"> +/*]]>*/</style></p><div class="toc-macro rbtoc1669468450079"> <ul class="toc-indentation"><li><a href="#Limitations-HowdoIaddnewcomponentstoanexistingpagedynamically?">How do I add new components to an existing page dynamically?</a></li><li><a href="#Limitations-Whydoesn'tmyserviceimplementationreloadwhenIchangeit?">Why doesn't my service implementation reload when I change it?</a></li><li><a href="#Limitations-HowdoIrunmultipleTapestryapplicationsinthesamewebapplication?">How do I run multiple Tapestry applications in the same web application?</a></li></ul> </div><h2 id="Limitations-HowdoIaddnewcomponentstoanexistingpagedynamically?">How do I add new components to an existing page dynamically?</h2><p>The short answer here is: <strong>you don't</strong>. The long answer here is <strong>you don't have to, to get the behavior you desire</strong>.</p><p>One of Tapestry basic values is high scalability: this is expressed in a number of ways, reflecting scalability concerns within a single server, and within a cluster of servers.</p><p>Although you code Tapestry pages and components as if they were ordinary POJOs (<span>Plain Old Java Objects -- Tapestry does not require you to extend any base classes or implement any special interfaces)</span><span>, as deployed by Tapestry they are closer to a traditional servlet: a single instance of each page services requests from multiple threads. Behind the scenes, Tapestry transforms you code, rewriting it on the fly.</span></p><p>What this means is that <em>any</em> incoming request must be handled by a <em>single page instance</em>. Therefore, Tapestry enforces the concept of <strong>static structure, dynamic behavior</strong>.</p><p>Tapestry provides quite a number of ways to vary what content is rendered, well beyond simple conditionals and loops. It is possible to "drag in" components from other pages when rendering a page (other FAQs will expand on this concept). The point is, that although a Tapestry page's structure is very rigid, the order in which the components of the page render does not have to be top to bottom.</p><h2 id="Limitations-Whydoesn'tmyserviceimplementationreloadwhenIchangeit?">Why doesn't my service implementation reload when I change it?</h2><p>Main article: <a href="service-implementation-reloading.html">Service Implementation Reloading</a></p><p>Live service reloading has some limitations:</p><ul><li>The service must define a service interface.</li><li>The service implementation must be on the file system (not inside a JAR).</li><li>The implementatio n must be instantiated by Tapestry, not inside code (even code inside a module class).</li><li>The service must use the default <a href="limitations.html">scope</a> (reloading of perthread scopes is not supported).</li></ul><p>Consider the following example module:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> <pre><code class="language-java">public static void bind(ServiceBinder binder) 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 Sat Nov 26 13:17:27 2022 @@ -32,10 +32,10 @@ <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="/resources/bootstrap/bootstrap.min.css"> <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="/resources/fonts/fonts.css"> <link rel="stylesheet" href="/styles/main.css"> <script type="text/javascript"> @@ -46,7 +46,7 @@ <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="stylesheet" href="/resources/bootstrap/bootstrap.min.js"> <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> @@ -143,11 +143,11 @@ <!-- /// Content Start --> <div id="content"> <div id="ConfluenceContent"><h1 id="LinkComponentsFAQ-LinkComponents">Link Components</h1><p>Main Articles: <a href="page-navigation.html">Page Navigation</a>, <a href="component-parameters.html">Component Parameters</a></p><h2 id="LinkComponentsFAQ-Contents">Contents</h2><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1591557958169 {padding: 0px;} -div.rbtoc1591557958169 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1591557958169 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1669468415834 {padding: 0px;} +div.rbtoc1669468415834 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1669468415834 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1591557958169"> +/*]]>*/</style></p><div class="toc-macro rbtoc1669468415834"> <ul class="toc-indentation"><li><a href="#LinkComponentsFAQ-HowdoIaddqueryparameterstoaPageLinkorActionLink?">How do I add query parameters to a PageLink or ActionLink?</a></li><li><a href="#LinkComponentsFAQ-HowdoIcreateaLinkbacktothecurrentpagefromacomponent?">How do I create a Link back to the current page from a component?</a></li></ul> </div><h2 id="LinkComponentsFAQ-HowdoIaddqueryparameterstoaPageLinkorActionLink?">How do I add query parameters to a PageLink or ActionLink?</h2><p>These components do not have parameters to allow you to specify query parameters for the link; they both allow you to specify a <em>context</em> (one or more values to encode into the request path).</p><p>However, you can accomplish the same thing with a little code and markup. For example, to create a link to another page and pass a query parameter, you can replace your PageLink component with a standard <code><a></code> tag:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> <pre><code class="language-xml"><a href="${profilePageLink}">Display Profile (w/ full details)</a> Modified: websites/production/tapestry/content/loading-the-project-into-eclipse.html ============================================================================== --- websites/production/tapestry/content/loading-the-project-into-eclipse.html (original) +++ websites/production/tapestry/content/loading-the-project-into-eclipse.html Sat Nov 26 13:17:27 2022 @@ -32,10 +32,10 @@ <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="/resources/bootstrap/bootstrap.min.css"> <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="/resources/fonts/fonts.css"> <link rel="stylesheet" href="/styles/main.css"> <script type="text/javascript"> @@ -46,7 +46,7 @@ <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="stylesheet" href="/resources/bootstrap/bootstrap.min.js"> <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> Modified: websites/production/tapestry/content/localization.html ============================================================================== --- websites/production/tapestry/content/localization.html (original) +++ websites/production/tapestry/content/localization.html Sat Nov 26 13:17:27 2022 @@ -32,10 +32,10 @@ <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="/resources/bootstrap/bootstrap.min.css"> <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="/resources/fonts/fonts.css"> <link rel="stylesheet" href="/styles/main.css"> <script type="text/javascript"> @@ -46,7 +46,7 @@ <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="stylesheet" href="/resources/bootstrap/bootstrap.min.js"> <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> @@ -160,7 +160,7 @@ <span class="icon aui-icon content-type-page" title="Page">Page:</span> </div> <div class="details"> - <a href="component-classes.html">Component Classes</a> + <a href="localization.html">Localization</a> </div> @@ -169,7 +169,7 @@ <span class="icon aui-icon content-type-page" title="Page">Page:</span> </div> <div class="details"> - <a href="templating-and-markup-faq.html">Templating and Markup FAQ</a> + <a href="component-classes.html">Component Classes</a> </div> @@ -178,7 +178,7 @@ <span class="icon aui-icon content-type-page" title="Page">Page:</span> </div> <div class="details"> - <a href="localization.html">Localization</a> + <a href="templating-and-markup-faq.html">Templating and Markup FAQ</a> </div> Modified: websites/production/tapestry/content/logging-in-tapestry.html ============================================================================== --- websites/production/tapestry/content/logging-in-tapestry.html (original) +++ websites/production/tapestry/content/logging-in-tapestry.html Sat Nov 26 13:17:27 2022 @@ -32,10 +32,10 @@ <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="/resources/bootstrap/bootstrap.min.css"> <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="/resources/fonts/fonts.css"> <link rel="stylesheet" href="/styles/main.css"> <script type="text/javascript"> @@ -46,7 +46,7 @@ <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="stylesheet" href="/resources/bootstrap/bootstrap.min.js"> <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> Modified: websites/production/tapestry/content/logging.html ============================================================================== --- websites/production/tapestry/content/logging.html (original) +++ websites/production/tapestry/content/logging.html Sat Nov 26 13:17:27 2022 @@ -32,10 +32,10 @@ <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="/resources/bootstrap/bootstrap.min.css"> <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="/resources/fonts/fonts.css"> <link rel="stylesheet" href="/styles/main.css"> <script type="text/javascript"> @@ -46,7 +46,7 @@ <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="stylesheet" href="/resources/bootstrap/bootstrap.min.js"> <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> Modified: websites/production/tapestry/content/mailing-lists.html ============================================================================== --- websites/production/tapestry/content/mailing-lists.html (original) +++ websites/production/tapestry/content/mailing-lists.html Sat Nov 26 13:17:27 2022 @@ -32,10 +32,10 @@ <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="/resources/bootstrap/bootstrap.min.css"> <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="/resources/fonts/fonts.css"> <link rel="stylesheet" href="/styles/main.css"> <script type="text/javascript"> @@ -46,7 +46,7 @@ <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="stylesheet" href="/resources/bootstrap/bootstrap.min.js"> <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> Modified: websites/production/tapestry/content/maven-support-faq.html ============================================================================== --- websites/production/tapestry/content/maven-support-faq.html (original) +++ websites/production/tapestry/content/maven-support-faq.html Sat Nov 26 13:17:27 2022 @@ -32,10 +32,10 @@ <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="/resources/bootstrap/bootstrap.min.css"> <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="/resources/fonts/fonts.css"> <link rel="stylesheet" href="/styles/main.css"> <script type="text/javascript"> @@ -46,7 +46,7 @@ <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="stylesheet" href="/resources/bootstrap/bootstrap.min.js"> <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> @@ -143,11 +143,11 @@ <!-- /// Content Start --> <div id="content"> <div id="ConfluenceContent"><h1 id="MavenSupportFAQ-MavenSupport">Maven Support</h1><h2 id="MavenSupportFAQ-Contents">Contents</h2><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1591557975387 {padding: 0px;} -div.rbtoc1591557975387 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1591557975387 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1669468549563 {padding: 0px;} +div.rbtoc1669468549563 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1669468549563 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1591557975387"> +/*]]>*/</style></p><div class="toc-macro rbtoc1669468549563"> <ul class="toc-indentation"><li><a href="#MavenSupportFAQ-WhydoMavenprojectnamesandotherdetailsshowupinmypages?">Why do Maven project names and other details show up in my pages?</a></li></ul> </div><h2 id="MavenSupportFAQ-WhydoMavenprojectnamesandotherdetailsshowupinmypages?">Why do Maven project names and other details show up in my pages?</h2><p>Tapestry and maven both use the same syntax for dynamic portions of files: the <code>${...</code>} syntax. When Maven is copying resources from <code>src/main/resources</code>, and when filtering is <em>enabled</em> (which is not the default), then any expansions in <em>Tapestry templates</em> that match against Maven project properties are substituted. If you look at the deployed application you'll see that <code>${name</code>} is gone, replaced with your project's name!</p><p>The solution is to update your <code>pom.xml</code> and ignore any .tml files when copying and filtering:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>pom.xml (partial)</b></div><div class="codeContent panelContent pdl"> <pre><code class="language-xml"> <resource> Modified: websites/production/tapestry/content/menuleft.html ============================================================================== --- websites/production/tapestry/content/menuleft.html (original) +++ websites/production/tapestry/content/menuleft.html Sat Nov 26 13:17:27 2022 @@ -32,10 +32,10 @@ <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="/resources/bootstrap/bootstrap.min.css"> <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="/resources/fonts/fonts.css"> <link rel="stylesheet" href="/styles/main.css"> <script type="text/javascript"> @@ -46,7 +46,7 @@ <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="stylesheet" href="/resources/bootstrap/bootstrap.min.js"> <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> @@ -59,7 +59,70 @@ </head> <body> <!-- /// Navigation Start --> - <div id="navigation"><p><img class="wysiwyg-unknown-macro" src="https://cwiki.apache.org/confluence/plugins/servlet/confluence/placeholder/unknown-macro?name=html&locale=en_GB&version=2"></p></div> + <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=24191922" 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> @@ -74,7 +137,7 @@ <!-- /// Breadcrumb End --> <!-- /// Smallbanner Start --> - <div id="smallbanner"><img class="wysiwyg-unknown-macro" src="https://cwiki.apache.org/confluence/plugins/servlet/confluence/placeholder/unknown-macro?name=html&locale=en_GB&version=2"></div> + <div id="smallbanner"><h1 class="title" id="title">menuleft</h1></div> <!-- /// Smallbanner Start --> <!-- /// Content Start --> @@ -96,7 +159,48 @@ </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"><img class="wysiwyg-unknown-macro" src="https://cwiki.apache.org/confluence/plugins/servlet/confluence/placeholder/unknown-macro?name=html&locale=en_GB&version=2"><br clear="none"></p><p><br clear="none"></p></div> + <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=24191922" 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/meta-programming-page-content.html ============================================================================== --- websites/production/tapestry/content/meta-programming-page-content.html (original) +++ websites/production/tapestry/content/meta-programming-page-content.html Sat Nov 26 13:17:27 2022 @@ -32,10 +32,10 @@ <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="/resources/bootstrap/bootstrap.min.css"> <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="/resources/fonts/fonts.css"> <link rel="stylesheet" href="/styles/main.css"> <script type="text/javascript"> @@ -46,7 +46,7 @@ <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="stylesheet" href="/resources/bootstrap/bootstrap.min.js"> <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> Modified: websites/production/tapestry/content/modules.html ============================================================================== --- websites/production/tapestry/content/modules.html (original) +++ websites/production/tapestry/content/modules.html Sat Nov 26 13:17:27 2022 @@ -32,10 +32,10 @@ <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="/resources/bootstrap/bootstrap.min.css"> <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="/resources/fonts/fonts.css"> <link rel="stylesheet" href="/styles/main.css"> <script type="text/javascript"> @@ -46,7 +46,7 @@ <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="stylesheet" href="/resources/bootstrap/bootstrap.min.js"> <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> Modified: websites/production/tapestry/content/navigation.html ============================================================================== --- websites/production/tapestry/content/navigation.html (original) +++ websites/production/tapestry/content/navigation.html Sat Nov 26 13:17:27 2022 @@ -32,10 +32,10 @@ <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="/resources/bootstrap/bootstrap.min.css"> <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="/resources/fonts/fonts.css"> <link rel="stylesheet" href="/styles/main.css"> <script type="text/javascript"> @@ -46,7 +46,7 @@ <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="stylesheet" href="/resources/bootstrap/bootstrap.min.js"> <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> Modified: websites/production/tapestry/content/navigationv2.html ============================================================================== --- websites/production/tapestry/content/navigationv2.html (original) +++ websites/production/tapestry/content/navigationv2.html Sat Nov 26 13:17:27 2022 @@ -32,10 +32,10 @@ <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="/resources/bootstrap/bootstrap.min.css"> <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="/resources/fonts/fonts.css"> <link rel="stylesheet" href="/styles/main.css"> <script type="text/javascript"> @@ -46,7 +46,7 @@ <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="stylesheet" href="/resources/bootstrap/bootstrap.min.js"> <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> Modified: websites/production/tapestry/content/news.html ============================================================================== --- websites/production/tapestry/content/news.html (original) +++ websites/production/tapestry/content/news.html Sat Nov 26 13:17:27 2022 @@ -32,10 +32,10 @@ <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="/resources/bootstrap/bootstrap.min.css"> <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="/resources/fonts/fonts.css"> <link rel="stylesheet" href="/styles/main.css"> <script type="text/javascript"> @@ -46,7 +46,7 @@ <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="stylesheet" href="/resources/bootstrap/bootstrap.min.js"> <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> Modified: websites/production/tapestry/content/object-providers.html ============================================================================== --- websites/production/tapestry/content/object-providers.html (original) +++ websites/production/tapestry/content/object-providers.html Sat Nov 26 13:17:27 2022 @@ -32,10 +32,10 @@ <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="/resources/bootstrap/bootstrap.min.css"> <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="/resources/fonts/fonts.css"> <link rel="stylesheet" href="/styles/main.css"> <script type="text/javascript"> @@ -46,7 +46,7 @@ <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="stylesheet" href="/resources/bootstrap/bootstrap.min.js"> <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> Modified: websites/production/tapestry/content/operation-tracker.html ============================================================================== --- websites/production/tapestry/content/operation-tracker.html (original) +++ websites/production/tapestry/content/operation-tracker.html Sat Nov 26 13:17:27 2022 @@ -32,10 +32,10 @@ <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="/resources/bootstrap/bootstrap.min.css"> <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="/resources/fonts/fonts.css"> <link rel="stylesheet" href="/styles/main.css"> <script type="text/javascript"> @@ -46,7 +46,7 @@ <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="stylesheet" href="/resources/bootstrap/bootstrap.min.js"> <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> Modified: websites/production/tapestry/content/ordering-by-constraints.html ============================================================================== --- websites/production/tapestry/content/ordering-by-constraints.html (original) +++ websites/production/tapestry/content/ordering-by-constraints.html Sat Nov 26 13:17:27 2022 @@ -32,10 +32,10 @@ <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="/resources/bootstrap/bootstrap.min.css"> <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="/resources/fonts/fonts.css"> <link rel="stylesheet" href="/styles/main.css"> <script type="text/javascript"> @@ -46,7 +46,7 @@ <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="stylesheet" href="/resources/bootstrap/bootstrap.min.js"> <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> Modified: websites/production/tapestry/content/overriding-exception-reporting.html ============================================================================== --- websites/production/tapestry/content/overriding-exception-reporting.html (original) +++ websites/production/tapestry/content/overriding-exception-reporting.html Sat Nov 26 13:17:27 2022 @@ -32,10 +32,10 @@ <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="/resources/bootstrap/bootstrap.min.css"> <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="/resources/fonts/fonts.css"> <link rel="stylesheet" href="/styles/main.css"> <script type="text/javascript"> @@ -46,7 +46,7 @@ <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="stylesheet" href="/resources/bootstrap/bootstrap.min.js"> <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> @@ -210,7 +210,7 @@ public class ActionFail { } } </code></pre> -</div></div><p>With production mode disabled, clicking the link displays the default exception report page:</p><p><span class="confluence-embedded-file-wrapper image-center-wrapper confluence-embedded-manual-size"><img class="confluence-embedded-image confluence-content-image-border image-center" width="500" src="overriding-exception-reporting.data/actionfail_-_top.png"></span></p><p><span class="confluence-embedded-file-wrapper image-center-wrapper confluence-embedded-manual-size"><img class="confluence-embedded-image confluence-content-image-border image-center" width="500" src="overriding-exception-reporting.data/Application_Exception.png"></span></p><p>The easy way to override the exception report is to provide an ExceptionReport page that overrides the one provided with the framework.</p><p>This is as easy as providing a page named "ExceptionReport". It must implement the <a class="external-link" href="http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/services/E xceptionReporter.html">ExceptionReporter</a> interface.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>ExceptionReport.tml</b></div><div class="codeContent panelContent pdl"> +</div></div><p>With production mode disabled, clicking the link displays the default exception report page:</p><p><span class="confluence-embedded-file-wrapper image-center-wrapper confluence-embedded-manual-size"><img class="confluence-embedded-image confluence-content-image-border image-center" draggable="false" width="500" src="overriding-exception-reporting.data/actionfail_-_top.png"></span></p><p><span class="confluence-embedded-file-wrapper image-center-wrapper confluence-embedded-manual-size"><img class="confluence-embedded-image confluence-content-image-border image-center" draggable="false" width="500" src="overriding-exception-reporting.data/Application_Exception.png"></span></p><p>The easy way to override the exception report is to provide an ExceptionReport page that overrides the one provided with the framework.</p><p>This is as easy as providing a page named "ExceptionReport". It must implement the <a class="external-link" href="http://tapestry.apache.org/tapestry5/api docs/org/apache/tapestry5/services/ExceptionReporter.html">ExceptionReporter</a> interface.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>ExceptionReport.tml</b></div><div class="codeContent panelContent pdl"> <pre><code class="language-xml"><html t:type="layout" title="Exception" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_4.xsd"> @@ -249,7 +249,7 @@ public class ExceptionReport implements } } </code></pre> -</div></div><p>The end result is a customized exception report page.</p><p><span class="confluence-embedded-file-wrapper image-center-wrapper confluence-embedded-manual-size"><img class="confluence-embedded-image confluence-content-image-border image-center" width="500" src="overriding-exception-reporting.data/customer_exception_report_-_open_1.png"></span></p><h2 id="OverridingExceptionReporting-Version2:OverridingtheRequestExceptionHandler">Version 2: Overriding the RequestExceptionHandler</h2><p>The previous example will display a link back to the Index page of the application. Another alternative is to display the error <on> the Index page. This requires a different approach: overriding the service responsible for reporting request exceptions.</p><p>The service <a class="external-link" href="http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/services/RequestExceptionHandler.html">RequestExceptionHandler</a> is responsible for this.</p><p>By replacing the def ault implementation of this service with our own implementation, we can take control over exactly what happens when a request exception occurs.</p><p>We'll do this in two steps. First, we'll extend the Index page to serve as an ExceptionReporter. Second, we'll override the default RequestExceptionHandler to use the Index page instead of the ExceptionReport page. Of course, this is just one approach.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Index.tml (partial)</b></div><div class="codeContent panelContent pdl"> +</div></div><p>The end result is a customized exception report page.</p><p><span class="confluence-embedded-file-wrapper image-center-wrapper confluence-embedded-manual-size"><img class="confluence-embedded-image confluence-content-image-border image-center" draggable="false" width="500" src="overriding-exception-reporting.data/customer_exception_report_-_open_1.png"></span></p><h2 id="OverridingExceptionReporting-Version2:OverridingtheRequestExceptionHandler">Version 2: Overriding the RequestExceptionHandler</h2><p>The previous example will display a link back to the Index page of the application. Another alternative is to display the error <on> the Index page. This requires a different approach: overriding the service responsible for reporting request exceptions.</p><p>The service <a class="external-link" href="http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/services/RequestExceptionHandler.html">RequestExceptionHandler</a> is responsible for this.</p><p>By replacing the default implementation of this service with our own implementation, we can take control over exactly what happens when a request exception occurs.</p><p>We'll do this in two steps. First, we'll extend the Index page to serve as an ExceptionReporter. Second, we'll override the default RequestExceptionHandler to use the Index page instead of the ExceptionReport page. Of course, this is just one approach.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Index.tml (partial)</b></div><div class="codeContent panelContent pdl"> <pre><code class="language-xml"> <t:if test="message"> <div class="panel panel-danger"> <div class="panel-heading">An exception has occurred.</div> @@ -305,7 +305,7 @@ public class ExceptionReport implements configuration.add(RequestExceptionHandler.class, handler); } </code></pre> -</div></div><p>First we define the new service using a service builder method. This is an alternative to the <code>bind()</code> method; we define the service, its interface type (the return type of the method) and the service id (the part that follows "build" is the method name) and provide the implementation inline. A service builder method must return the service implementation, here implemented as an inner class.</p><p>The Logger resource that is passed into the builder method is the Logger appropriate for the service. ResponseRenderer and ComponentSource are two services defined by Tapestry.</p><p>With this in place, there are now two different services that implement the RequestExceptionHandler interface: the default one built into Tapestry (whose service id is "RequestExceptionHandler") and the new one defined in this module, "AppRequestExceptionHandler"). Without a little more work, Tapestry will be unable to determine which one to use when an exception does occur.</p><p>Tap estry has a pipeline for resolving injected dependencies; the ServiceOverride service is one part of that pipeline. Contributions to it are used to override an existing service, when the injection is exclusively by type.</p><p>Here we inject the AppRequestExceptionHandler service and contribute it as the override for type RequestExceptionHandler. The @Local annotation is used to select the RequestHandler service defined by this module, AppModule. Once contributed into ServiceOverride, it becomes the default service injected throughout the Registry.</p><p>This finally brings us to the point where we can see the result:</p><p><span class="confluence-embedded-file-wrapper image-center-wrapper confluence-embedded-manual-size"><img class="confluence-embedded-image confluence-content-image-border image-center" height="375" width="500" src="overriding-exception-reporting.data/index_as_excepton_report.png"></span></p><h2 id="OverridingExceptionReporting-Version3:DecoratingtheRequestExceptio nHandler">Version 3: Decorating the RequestExceptionHandler</h2><p>A third option is available: we don't define a <em>new</em> service, but instead <em>decorate</em> the existing RequestExceptionHandler service. This approach means we don't have to make a contribution to the ServiceOverride service.</p><p>Service decoration is a powerful facility of Tapestry that is generally used to "wrap" an existing service with an interceptor that provides new functionality such as logging, security, transaction management or other cross-cutting concerns. The interceptor is an object that implements the same interface as the service being decorated, and usually delegates method invocations to it.</p><p>However, there's no requirement that an interceptor for a service actually invoke methods on the service; here we contribute a new implementation that <em>replaces</em> the original:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bot tom-width: 1px;"><b>AppModule.java (partial)</b></div><div class="codeContent panelContent pdl"> +</div></div><p>First we define the new service using a service builder method. This is an alternative to the <code>bind()</code> method; we define the service, its interface type (the return type of the method) and the service id (the part that follows "build" is the method name) and provide the implementation inline. A service builder method must return the service implementation, here implemented as an inner class.</p><p>The Logger resource that is passed into the builder method is the Logger appropriate for the service. ResponseRenderer and ComponentSource are two services defined by Tapestry.</p><p>With this in place, there are now two different services that implement the RequestExceptionHandler interface: the default one built into Tapestry (whose service id is "RequestExceptionHandler") and the new one defined in this module, "AppRequestExceptionHandler"). Without a little more work, Tapestry will be unable to determine which one to use when an exception does occur.</p><p>Tap estry has a pipeline for resolving injected dependencies; the ServiceOverride service is one part of that pipeline. Contributions to it are used to override an existing service, when the injection is exclusively by type.</p><p>Here we inject the AppRequestExceptionHandler service and contribute it as the override for type RequestExceptionHandler. The @Local annotation is used to select the RequestHandler service defined by this module, AppModule. Once contributed into ServiceOverride, it becomes the default service injected throughout the Registry.</p><p>This finally brings us to the point where we can see the result:</p><p><span class="confluence-embedded-file-wrapper image-center-wrapper confluence-embedded-manual-size"><img class="confluence-embedded-image confluence-content-image-border image-center" draggable="false" height="375" width="500" src="overriding-exception-reporting.data/index_as_excepton_report.png"></span></p><h2 id="OverridingExceptionReporting-Version3:Decorating theRequestExceptionHandler">Version 3: Decorating the RequestExceptionHandler</h2><p>A third option is available: we don't define a <em>new</em> service, but instead <em>decorate</em> the existing RequestExceptionHandler service. This approach means we don't have to make a contribution to the ServiceOverride service.</p><p>Service decoration is a powerful facility of Tapestry that is generally used to "wrap" an existing service with an interceptor that provides new functionality such as logging, security, transaction management or other cross-cutting concerns. The interceptor is an object that implements the same interface as the service being decorated, and usually delegates method invocations to it.</p><p>However, there's no requirement that an interceptor for a service actually invoke methods on the service; here we contribute a new implementation that <em>replaces</em> the original:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>AppModule.java (partial)</b></div><div class="codeContent panelContent pdl"> <pre><code class="language-java"> public RequestExceptionHandler decorateRequestExceptionHandler( final Logger logger, final ResponseRenderer renderer,