Author: buildbot
Date: Sun Feb 11 16:21:09 2018
New Revision: 1025228

Log:
Production update by buildbot for tapestry

Modified:
    websites/production/tapestry/content/cache/main.pageCache
    websites/production/tapestry/content/creating-the-skeleton-application.html
    websites/production/tapestry/content/documentation.html
    websites/production/tapestry/content/exploring-the-project.html
    websites/production/tapestry/content/tapestry-tutorial.html

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

Modified: 
websites/production/tapestry/content/creating-the-skeleton-application.html
==============================================================================
--- websites/production/tapestry/content/creating-the-skeleton-application.html 
(original)
+++ websites/production/tapestry/content/creating-the-skeleton-application.html 
Sun Feb 11 16:21:09 2018
@@ -91,7 +91,7 @@
   
<localRepository>C:/Users/joeuser/.m2/repository</localRepository>
 </settings>
 </pre>
-</div></div><p>Of course, adjust the <code>localRepository</code> element to 
match the correct path for your computer.</p><h3 
id="CreatingTheSkeletonApplication-CreateProject">Create Project</h3><p>Okay, 
let's get started creating our new project.</p><p>In Eclipse, go to 
<strong>File &gt; New &gt;</strong> <strong>Project... &gt; Maven &gt; Maven 
Project</strong></p><p><strong><span class="confluence-embedded-file-wrapper 
confluence-embedded-manual-size"><img class="confluence-embedded-image" 
width="613" 
src="creating-the-skeleton-application.data/select-a-wizard.png"></span><br 
clear="none"></strong></p><p>Then click <strong>Next</strong>, 
<strong>Next</strong> (again), and then on the <strong>Select an 
Archetype</strong> page click the <strong>Configure</strong> button on the 
Catalog line. The <strong>Archetype</strong> preferences dialog should appear. 
Click the <strong>Add Remote Catalog...</strong> button, as shown 
below:</p><p><span class="confluence-embedded-file-wrapper conf
 luence-embedded-manual-size"><img class="confluence-embedded-image" 
width="900" 
src="creating-the-skeleton-application.data/add-archetype-catalog.png"></span></p><p>As
 shown above, enter <span class="nolink"><span class="nolink">"<span 
class="nolink">http://tapestry.apache.org</span>"</span></span> in the Catalog 
File field, and "Apache Tapestry" in the Description field.</p><div 
class="confluence-information-macro 
confluence-information-macro-information"><span class="aui-icon aui-icon-small 
aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>If you want to try an unreleased 
(alpha or beta) version of Tapestry, use <span class="nolink">the <strong><a  
class="external-link" 
href="https://repository.apache.org/content/repositories/staging";>https://repository.apache.org/content/repositories/staging</a></strong></span>
 archetype catalog file instead.</p></div></div><p>Click <strong>OK</strong>, 
then<strong> OK</strong> again.</p
 ><p>On the Select an Archetype dialog (shown below), select the newly-added 
 >Apache Tapestry catalog, then select the "quickstart" artifact from the list 
 >and click <strong>Next</strong>.</p><p><span 
 >class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img 
 >class="confluence-embedded-image" width="804" 
 >src="creating-the-skeleton-application.data/select-archetype.png"></span></p><p>&#160;</p><p><em><strong>Note:</strong>
 > Screenshots in this tutorial may show different (either newer or older) 
 >versions of Tapestry than you may see.</em></p><p>Fill in the Group Id, 
 >Artifact Id, Version and Package&#160; as follows:</p><p><span 
 >class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img 
 >class="confluence-embedded-image" width="530" 
 >src="creating-the-skeleton-application.data/specify-archetype-parameters.png"></span></p><p>then
 > click Finish.</p><div class="confluence-information-macro 
 >confluence-information-macro-information"><span class="aui-icon aui-i
 con-small aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>The first time you use Maven, 
project creation may take a while as Maven downloads a large number of JAR 
dependencies for Maven, Jetty and Tapestry. These downloaded files are cached 
locally and will not need to be downloaded again, but you do have to be patient 
on first use.</p></div></div><p>After Maven finishes, you'll see a new 
directory, <code>tutorial1, in your Package Explorer view in 
Eclipse.</code></p><h2 
id="CreatingTheSkeletonApplication-RunningtheApplicationusingJetty">Running the 
Application using Jetty</h2><p>One of the first things you can do is use Maven 
to run Jetty directly.</p><p>Right-click on the <code>tutorial1</code> project 
in your Package Explorer view and select <strong>Run As &gt; Maven Build... 
&gt;</strong>, enter a Goal of <strong>"jetty:run"</strong>. This creates a 
"Run Configuration" named "tutorial1" that we'll use throughout this 
 tutorial to start the app:</p><p><span class="confluence-embedded-file-wrapper 
confluence-embedded-manual-size"><img class="confluence-embedded-image" 
width="568" 
src="creating-the-skeleton-application.data/run-configuration.png"></span></p><p>Tapestry
 runs best with a couple of additional options; click the "JRE" tab and enter 
the following VM 
Arguments:</p><pre></pre><p>-XX:MaxPermSize=256M</p><p>-Xmx600m</p><p>-Dtapestry.execution-mode=development</p>
+</div></div><p>Of course, adjust the <code>localRepository</code> element to 
match the correct path for your computer.</p><h3 
id="CreatingTheSkeletonApplication-CreateProject">Create Project</h3><p>Okay, 
let's get started creating our new project.</p><div 
class="confluence-information-macro confluence-information-macro-tip"><span 
class="aui-icon aui-icon-small aui-iconfont-approve 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>The instructions below use 
Eclipse's New Project wizard to create the project from a Maven archetype. If 
you'd rather use the <strong>mvn</strong> command line, see the <a  
href="getting-started.html">Getting Started</a> instructions, then skip to <a  
href="creating-the-skeleton-application.html">Creating The Skeleton 
Application</a> page.</p></div></div><p>&#160;</p><p>In Eclipse, go to 
<strong>File &gt; New &gt;</strong> <strong>Project... &gt; Maven &gt; Maven 
Project</strong></p><p><strong><span class="confluenc
 e-embedded-file-wrapper confluence-embedded-manual-size"><img 
class="confluence-embedded-image" width="613" 
src="creating-the-skeleton-application.data/select-a-wizard.png"></span><br 
clear="none"></strong></p><p>Then click <strong>Next</strong>, 
<strong>Next</strong> (again), and then on the <strong>Select an 
Archetype</strong> page click the <strong>Configure</strong> button on the 
Catalog line. The <strong>Archetype</strong> preferences dialog should appear. 
Click the <strong>Add Remote Catalog...</strong> button, as shown 
below:</p><p><span class="confluence-embedded-file-wrapper 
confluence-embedded-manual-size"><img class="confluence-embedded-image" 
width="900" 
src="creating-the-skeleton-application.data/add-archetype-catalog.png"></span></p><p>As
 shown above, enter <span class="nolink"><span class="nolink">"<span 
class="nolink">http://tapestry.apache.org</span>"</span></span> in the Catalog 
File field, and "Apache Tapestry" in the Description field.</p><div 
class="confluence-i
 nformation-macro confluence-information-macro-information"><span 
class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>If you want to try an unreleased 
(alpha or beta) version of Tapestry, use <span class="nolink">the <strong><a  
class="external-link" 
href="https://repository.apache.org/content/repositories/staging";>https://repository.apache.org/content/repositories/staging</a></strong></span>
 archetype catalog file instead.</p></div></div><p>Click <strong>OK</strong>, 
then<strong> OK</strong> again.</p><p>On the Select an Archetype dialog (shown 
below), select the newly-added Apache Tapestry catalog, then select the 
"quickstart" artifact from the list and click 
<strong>Next</strong>.</p><p><span class="confluence-embedded-file-wrapper 
confluence-embedded-manual-size"><img class="confluence-embedded-image" 
width="804" 
src="creating-the-skeleton-application.data/select-archetype.png"></span></p><p>
 &#160;</p><p><em><strong>Note:</strong> Screenshots in this tutorial may show 
different (either newer or older) versions of Tapestry than you may 
see.</em></p><p>Fill in the Group Id, Artifact Id, Version and Package&#160; as 
follows:</p><p><span class="confluence-embedded-file-wrapper 
confluence-embedded-manual-size"><img class="confluence-embedded-image" 
width="530" 
src="creating-the-skeleton-application.data/specify-archetype-parameters.png"></span></p><p>then
 click Finish.</p><div class="confluence-information-macro 
confluence-information-macro-information"><span class="aui-icon aui-icon-small 
aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>The first time you use Maven, 
project creation may take a while as Maven downloads a large number of JAR 
dependencies for Maven, Jetty and Tapestry. These downloaded files are cached 
locally and will not need to be downloaded again, but you do have to be patient 
on first use.</p></
 div></div><p>After Maven finishes, you'll see a new directory, 
<code>tutorial1, in your Package Explorer view in Eclipse.</code></p><h2 
id="CreatingTheSkeletonApplication-RunningtheApplicationusingJetty">Running the 
Application using Jetty</h2><p>One of the first things you can do is use Maven 
to run Jetty directly.</p><p>Right-click on the <code>tutorial1</code> project 
in your Package Explorer view and select <strong>Run As &gt; Maven Build... 
&gt;</strong>, enter a Goal of <strong>"jetty:run"</strong>. This creates a 
"Run Configuration" named "tutorial1" that we'll use throughout this tutorial 
to start the app:</p><p><span class="confluence-embedded-file-wrapper 
confluence-embedded-manual-size"><img class="confluence-embedded-image" 
width="568" 
src="creating-the-skeleton-application.data/run-configuration.png"></span></p><p>Tapestry
 runs best with a couple of additional options; click the "JRE" tab and enter 
the following VM Arguments:</p><pre></pre><p>-XX:MaxPermSize=256M</p><p>
 -Xmx600m</p><p>-Dtapestry.execution-mode=development</p>
 
 
 <p><code><em>(If you're using JDK 1.8 then you should omit the MaxPermSize 
argument.)</em></code></p><p><code>Here's how it 
looks:</code></p><p><code><span class="confluence-embedded-file-wrapper 
confluence-embedded-manual-size"><img class="confluence-embedded-image" 
width="666" 
src="creating-the-skeleton-application.data/run-configuration-jre.png"></span><br
 clear="none"></code></p><p>Finally, click <strong>Run</strong>.</p><p>Again, 
the first time, there's a dizzying number of downloads, but before you know it, 
the Jetty servlet container is up and running.</p><p>Once Jetty is initialized 
(which only takes a few seconds after the first time), you'll see the following 
in your console:</p><p><span class="confluence-embedded-file-wrapper 
confluence-embedded-manual-size"><img class="confluence-embedded-image" 
width="865" 
src="creating-the-skeleton-application.data/console-startup.png"></span></p><p><em>Note
 the red square icon above. Later on you'll use that icon to stop Jetty before 
 restarting the app.</em></p><p>You can now open a web browser to <a  
class="external-link" href="http://localhost:8080/tutorial1/"; 
rel="nofollow">http://localhost:8080/tutorial1/</a> to see the running 
application:</p><p><span class="confluence-embedded-file-wrapper 
confluence-embedded-manual-size"><img class="confluence-embedded-image" 
width="785" 
src="creating-the-skeleton-application.data/startpage.png"></span></p><p>&#160;</p><div
 style="clear: both"></div><p style="text-align: left;"><strong><em>NOTE: Your 
screen may look very different depending on the version of Tapestry you are 
using!</em></strong></p><p style="text-align: left;">The date and time in the 
middle of the page shows that this is a live application.</p><p>This is a 
complete little web app; it doesn't do much, but it demonstrate how to create a 
number of pages sharing a common layout, and demonstrates some simple 
navigation and link handling. You can see that it has several different pages 
that share a common layo
 ut. (<span><em>Layout</em> is a loose term meaning common look and feel and 
navigation across many or all of the pages of an application. Often an 
application will include a Layout component to provide that 
commonness.)</span></p><p><span>Next: <a  
href="creating-the-skeleton-application.html">Creating The Skeleton 
Application</a></span></p><p><span><br clear="none"></span></p></div>

Modified: websites/production/tapestry/content/documentation.html
==============================================================================
--- websites/production/tapestry/content/documentation.html (original)
+++ websites/production/tapestry/content/documentation.html Sun Feb 11 16:21:09 
2018
@@ -70,7 +70,7 @@
                 <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="us
 er-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="c
 hildpages-macro"><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></l
 i></ul></li><li><a  href="injection.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">T
 apestry IoC Overview</a></li><li><a  href="tapestry-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="strategy
 builder-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></ul></li><li><a  href="integrati
 ng-with-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="legacy-javascript.html">Legacy JavaScript</a></li><li><a  
href="ajax-and-zones.html">Ajax and Zones</a></li></ul></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">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 Se
 rvices 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="beaneditform-faq.html">BeanEditForm 
FAQ</a></li><li><a  href="link-components-fa
 q.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 Not
 es</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-no
 tes-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></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">Confl
 uence 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 rich collection of guides is 
available to teach beginners the basics and help even experienced developers 
deepen their understanding of Tapestry's power. <em>Code less, deliver 
more!</em></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="confluenceTable"><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-tutorial.html">Tapestry Tut
 orial</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></strong></p></td><td c
 olspan="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><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a  class="external-link" 
href="http://refcardz.dzone.com/refcardz/apache-tapestry-50?oid=hom7948"; 
rel="nofollow">Refcard</a></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>A color, six page foldout guide to Tapestry 5.0 
(PDF)</p></td></tr></tbody></table></div><h1 
id="Documentation-APIandComponentReference">API and Component 
Reference</h1><div class="table-wrap"><table 
class="confluenceTable"><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/current";>5.4</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">(same as current)</span></em></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><a  href="component-reference.html">5.4 
(current)</a></td></tr><tr><th colspa
 n="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></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 
infor
 mation on the concepts behind Tapestry and instructions on how to use this 
powerful tool. Highlights include:</p><ul><li><a  
href="legacy-javascript.html">Legacy 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 using 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 Com
 munity</h1><ul><li><a  class="external-link" 
href="http://tapestryjava.blogspot.com/"; rel="nofollow">Tapestry Central</a> is 
Howard Lewis Ship's blog. As the creator of Tapestry, he provides valuable 
insights into Tapestry's latest features and future directions.</li><li><a  
class="external-link" href="http://blog.tapestry5.de/"; rel="nofollow">Igor 
Drobiazko's blog</a> (committer &amp; PMC) contains news on Tapestry 
development and will guide you through some of the most exciting parts of 
Tapestry.</li><li><a  class="external-link" href="http://tawus.wordpress.com/"; 
rel="nofollow">Java Magic</a> (by Taha Hafeez, committer) has a series of 
tutorials illustrating some of the more advanced Tapestry and Plastic features 
and techniques.</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></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></li><li><a  class="external-link" 
href="http://jazoon.com/Portals/0/Content/slides/th_a7_1130-1220_drobiazko.pdf"; 
rel="nofollow">JavaServer Faces 2.0 vs. Tapestry 5</a> (PDF) A Head-to-Head 
Comparison by Igor Drobiazko at Jazoon 2010</li><li><a  class="external-link" 
href="http://www.parleys.com/#st=5&amp;sl=5&amp;id=1700"; 
rel="nofollow">Tapestry 5: Java power, Scripting Ease</a> (VIDEO) by Howard 
Lewis Ship at Devoxx 2009</li></ul><p><a  href="presentations.html">More 
presentations</a> ...</p><h1 id="Documentation-TapestryWikis">Tapestry 
Wikis</h1><ul><li><a  class="external-link" 
href="http://wiki.apache.org/tapestry/FrontPage";>Tapestry Community Wiki</a> 
(Moin Moin) con
 tains a lot of user-generated information on different Tapestry use 
cases.</li><li><a  
href="https://cwiki.apache.org/confluence/x/VCFkAQ";>Documentation Source 
wiki</a> (Confluence) &#8211; the wiki used as the content editor for the 
official Tapestry documentation</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 
Overflow</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>&#160;</p></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="confluenceTable"><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-tutorial.html">Tapestry Tutorial</a></p></td><td colspan="1" 
rowspan="1" class="conf
 luenceTd"><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></strong></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>A quick pl
 ace 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><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a  class="external-link" 
href="http://refcardz.dzone.com/refcardz/apache-tapestry-50?oid=hom7948"; 
rel="nofollow">Refcard</a></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>A color, six page foldout guide to Tapestry 5.0 
(PDF)</p></td></tr></tbody></table></div><h1 
id="Documentation-APIandComponentReference">API and Component 
Reference</h1><div class="table-wrap"><table 
class="confluenceTable"><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/current";>5.4</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">(same as current)</span></em></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><a  href="component-reference.html">5.4 
(current)</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></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 o
 n 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 using 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> is Howard Lewis Ship's blog. As the creator 
of Tapestry, he provides valuable insights into Tapestry's latest features and 
future directions.</li><li><a  class="external-link" 
href="http://blog.tapestry5.de/"; rel="nofollow">Igor Drobiazko's blog</a> 
(committer &amp; PMC) contains news on Tapestry development and will guide you 
through some of the most exciting parts of Tapestry.</li><li><a  
class="external-link" href="http://tawus.wordpress.com/"; rel="nofollow">Java 
Magic</a> (by Taha Hafeez, committer) has a series of tutorials illustrating 
some of the more advanced Tapestry and Plastic features and 
techniques.</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></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></li><li><a  class="external-link" 
href="http://jazoon.com/Portals/0/Content/slides/th_a7_1130-1220_drobiazko.pdf"; 
rel="nofollow">JavaServer Faces 2.0 vs. Tapestry 5</a> (PDF) A Head-to-Head 
Comparison by Igor Drobiazko at Jazoon 2010</li><li><a  class="external-link" 
href="http://www.parleys.com/#st=5&amp;sl=5&amp;id=1700"; 
rel="nofollow">Tapestry 5: Java power, Scripting Ease</a> (VIDEO) by Howard 
Lewis Ship at Devoxx 2009</li></ul><p><a  href="presentations.html">More 
presentations</a> ...</p><h1 id="Documentation-TapestryWikis">Tapestry 
Wikis</h1><ul><li><a  class="external-link" 
href="http://wiki.apache.org/tapestry/FrontPage";>Tapestry Community Wiki</a> 
(Moin Moin) contains a lot of user-gen
 erated information on different Tapestry use cases.</li><li><a  
href="https://cwiki.apache.org/confluence/x/VCFkAQ";>Documentation Source 
wiki</a> (Confluence) &#8211; the wiki used as the content editor for the 
official Tapestry documentation</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 
Overflow</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>&#160;</p></div>
       </div>
 
       <div class="clearer"></div>

Modified: websites/production/tapestry/content/exploring-the-project.html
==============================================================================
--- websites/production/tapestry/content/exploring-the-project.html (original)
+++ websites/production/tapestry/content/exploring-the-project.html Sun Feb 11 
16:21:09 2018
@@ -232,7 +232,7 @@ public class Index
     &lt;/t:block&gt;
 
 &lt;/html&gt;</pre>
-</div></div><div class="confluence-information-macro 
confluence-information-macro-tip"><span class="aui-icon aui-icon-small 
aui-iconfont-approve confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>You do have to name your component 
template file, Index.tml, with the <strong>exact same case</strong> as the 
component class name, Index. If you get the case wrong, it may work on some 
operating systems (such as Mac OS X, Windows) and not on others (Linux, and 
most others). This can be really vexing, as it is common to develop on Windows 
and deploy on Linux or Solaris, so be careful about case in this one 
area.</p></div></div><p>The goal in Tapestry is for component templates, such 
as Index.tml, to look as much as possible like ordinary, static HTML files. (By 
static, we mean unchanging, as opposed to a dynamically generated Tapestry 
page.)</p><p>In fact, the expectation is that in many cases, the templates will 
start as static HTML files, created b
 y a web developer, and then be <em>instrumented</em> to act as live Tapestry 
pages.</p><p>Tapestry hides non-standard elements and attributes inside XML 
namespaces. By convention, the prefix "t:" is used for the primary namespace, 
but that is not a requirement, any prefix you want to use is fine.</p><p>This 
short template demonstrates quite a few features of Tapestry.</p><div 
class="confluence-information-macro confluence-information-macro-warning"><span 
class="aui-icon aui-icon-small aui-iconfont-error 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>Part of the concept of the 
quickstart archetype is to demonstrate a bunch of different features, 
approaches, and common patterns used in Tapestry. So yes, we're hitting you 
with a lot all at once.</p></div></div><p>First of all, there are two XML 
namespaces commonly defined:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><div class="confluence-information-macro 
confluence-information-macro-tip"><span class="aui-icon aui-icon-small 
aui-iconfont-approve confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>You <strong>do</strong> have to 
name your component template file, Index.tml, with the <strong>exact same 
case</strong> as the component class name, Index. If you get the case wrong, it 
may work on some operating systems (such as Mac OS X, Windows) and not on 
others (Linux, and most others). This can be really vexing, as it is common to 
develop on Windows and deploy on Linux or Solaris, so be careful about case in 
this one area.</p></div></div><p>The goal in Tapestry is for component 
templates, such as Index.tml, to look as much as possible like ordinary, static 
HTML files. (By static, we mean unchanging, as opposed to a dynamically 
generated Tapestry page.)</p><p>In fact, the expectation is that in many cases, 
the templates will start as static HTML
  files, created by a web developer, and then be <em>instrumented</em> to act 
as live Tapestry pages.</p><p>Tapestry hides non-standard elements and 
attributes inside XML namespaces. By convention, the prefix "t:" is used for 
the primary namespace, but that is not a requirement, any prefix you want to 
use is fine.</p><p>This short template demonstrates quite a few features of 
Tapestry.</p><div class="confluence-information-macro 
confluence-information-macro-warning"><span class="aui-icon aui-icon-small 
aui-iconfont-error confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>Part of the concept of the 
quickstart archetype is to demonstrate a bunch of different features, 
approaches, and common patterns used in Tapestry. So yes, we're hitting you 
with a lot all at once.</p></div></div><p>First of all, there are two XML 
namespaces commonly defined:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <pre class="brush: xml; gutter: false; theme: Default" 
style="font-size:12px;">  
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_4.xsd";
   xmlns:p="tapestry:parameter"
 </pre>
@@ -262,13 +262,13 @@ public class Index
 
 
 
-<span class="gliffy-container" id="gliffy-container-24346949-3506" 
data-fullwidth="913" data-ceoid="24188263" 
data-edit="${diagramEditLink.getLinkUrl()}" 
data-full="${diagramZoomLink.getLinkUrl()}" data-filename="Templates and 
Parameters">
+<span class="gliffy-container" id="gliffy-container-24346949-8719" 
data-fullwidth="913" data-ceoid="24188263" 
data-edit="${diagramEditLink.getLinkUrl()}" 
data-full="${diagramZoomLink.getLinkUrl()}" data-filename="Templates and 
Parameters">
 
-    <map id="gliffy-map-24346949-1297" name="gliffy-map-24346949-1297"></map>
+    <map id="gliffy-map-24346949-8526" name="gliffy-map-24346949-8526"></map>
 
-    <img class="gliffy-image gliffy-image-border" 
id="gliffy-image-24346949-3506" width="304" height="300" data-full-width="913" 
data-full-height="901" 
src="https://cwiki.apache.org/confluence/download/attachments/24188263/Templates%20and%20Parameters.png?version=2&amp;modificationDate=1371888025000&amp;api=v2";
 alt="Templates and Parameters" usemap="#gliffy-map-24346949-1297">
+    <img class="gliffy-image gliffy-image-border" 
id="gliffy-image-24346949-8719" width="304" height="300" data-full-width="913" 
data-full-height="901" 
src="https://cwiki.apache.org/confluence/download/attachments/24188263/Templates%20and%20Parameters.png?version=2&amp;modificationDate=1371888025000&amp;api=v2";
 alt="Templates and Parameters" usemap="#gliffy-map-24346949-8526">
 
-    <map class="gliffy-dynamic" id="gliffy-dynamic-map-24346949-3506" 
name="gliffy-dynamic-map-24346949-3506"></map>
+    <map class="gliffy-dynamic" id="gliffy-dynamic-map-24346949-8719" 
name="gliffy-dynamic-map-24346949-8719"></map>
 </span>
 
 

Modified: websites/production/tapestry/content/tapestry-tutorial.html
==============================================================================
--- websites/production/tapestry/content/tapestry-tutorial.html (original)
+++ websites/production/tapestry/content/tapestry-tutorial.html Sun Feb 11 
16:21:09 2018
@@ -127,7 +127,7 @@
 </div>
 
 
-<h1 id="TapestryTutorial-TableofContents">Table of Contents</h1><p></p><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><h1 
id="TapestryTutorial-Introduction">Introduction</h1><p>Welcome to 
Tapestry!</p><p>This is a tutorial for people who will be creating Tapestry web 
applications. It doesn't matter whether you have experience with earlier 
versions of Tapestry or other web frameworks. In fact, in some ways, the less 
you know about web development in 
 general, the better off you may be ... that much less to unlearn!</p><p>You do 
need to have a reasonable understanding of HTML, a smattering of XML, and a 
good understanding of basic Java language features, including 
Annotations.</p><h1 
id="TapestryTutorial-TheChallengesofWebApplicationDevelopment">The Challenges 
of Web Application Development</h1><p>If you're used to developing web 
applications using servlets and JSPs, or with Struts, you are simply used to a 
lot of pain. So much pain, you may not even understand the dire situation you 
are in! These are environments with no safety net; Struts and the Servlet API 
have no idea how your application is structured, or how the different pieces 
fit together. Any URL can be an action and any action can forward to any view 
(usually a JSP) to provide an HTML response to the web browser. The pain is the 
unending series of small, yet important, decisions you have to make as a 
developer (and communicate to the rest of your team). What are the n
 aming conventions for actions, for pages, for attributes stored in the 
HttpSession or HttpServletRequest? Where do cross-cutting concerns such as 
database transactions, caching and security get implemented (and do you have to 
cut-and-paste Java or XML to make it work?) How are your packages organized ... 
where to the user interface classes go, and where do the data and entity 
objects go? How do you share code from one part of your application to 
another?</p><p>On top of all that, the traditional approaches thrust something 
most unwanted in your face: <em>multi-threaded coding</em>. Remember back to 
Object Oriented Programming 101 where an object was defined as a bundle of data 
and operations on that data? You have to unlearn that lesson as soon as you 
build a traditional web application, because web applications are 
multi-threaded. An application server could be handling dozens or hundreds of 
requests from individual users, each in their own thread, and each sharing the 
exact same o
 bjects. Suddenly, you can't store data inside an object (a servlet or a Struts 
Action) because whatever data you store for one user will be instantly 
overwritten by some other user.</p><p>Worse, your objects each have only one 
operation: <code>doGet()</code> or <code>doPost()</code>.</p><p>Meanwhile, most 
of your day-to-day work involves deciding how to package up some data already 
inside a particular Java object and squeeze that data into a URL's query 
parameters, so that you can write more code to convert it back if the user 
clicks that particular link. And don't forget editing a bunch of XML files to 
keep the servlet container, or the Struts framework, aware of these 
decisions.</p><p>Just for laughs, remember that you have to rebuild, redeploy 
and restart your application after virtually any change. Is any of this 
familiar? Then perhaps you'd appreciate something a little <em>less</em> 
familiar: Tapestry.</p><h1 id="TapestryTutorial-TheTapestryWay">The Tapestry 
Way</h1><p>Tapestr
 y uses a very different model: a structured, organized world of pages, and 
components within pages. Everything has a very specific name (that you 
provide). Once you know the name of a page, you know the location of the Java 
class for that page, the location of the template for that page, and the total 
structure of the page. Tapestry knows all this as well, and can make things 
<strong>just work</strong>.</p><p>As we'll see in the following pages, Tapestry 
lets you code in terms of your objects. You'll barely see any Tapestry classes, 
outside of a few Java annotations. If you have information to store, store it 
as fields of your classes, not inside the HttpServletRequest or HttpSession. If 
you need some code to execute, it's just a simple annotation or method naming 
convention to get Tapestry to invoke that method, at the right time, with the 
right data. The methods don't even have to be public!</p><p>Tapestry also 
shields you from most of the multi-threaded aspects of web application
  development. Tapestry manages the life cycle of your page and components 
objects, and the fields of the pages and components, in a thread-safe way. Your 
page and component classes always look like simple, standard <a  
class="external-link" href="http://en.wikipedia.org/wiki/Plain_Old_Java_Object"; 
rel="nofollow">POJOs</a>.</p><p>Tapestry began in January 2000, and it now 
reflects over fifteen years of experience of the entire Tapestry community. 
Tapestry brings to the table all that experience about the best ways to build 
scalable, maintainable, robust, internationalized, and Ajax-enabled 
applications. Tapestry 5 represents a completely new code base (compared to 
Tapestry 4) designed to simplify the Tapestry coding model while at the same 
time extending the power of Tapestry and improving performance.</p><h1 
id="TapestryTutorial-GettingtheTutorialSource">Getting the Tutorial 
Source</h1><p>Although you won't need it, the source code for this tutorial is 
available on <a  class="extern
 al-link" href="https://github.com/hlship/tapestry5-tutorial"; 
rel="nofollow">GitHub</a>.</p><h1 id="TapestryTutorial-TimetoBegin">Time to 
Begin</h1><p>Okay, enough background. Now let's dig in: <a  
href="dependencies-tools-and-plugins.html">Dependencies, Tools and 
Plugins</a></p><p>&#160;</p></div>
+<h1 id="TapestryTutorial-TableofContents">Table of Contents</h1><p></p><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><h1 
id="TapestryTutorial-Introduction">Introduction</h1><p>Welcome to 
Tapestry!</p><p>This is a tutorial for people who will be creating Tapestry web 
applications. It doesn't matter whether you have experience with earlier 
versions of Tapestry or other web frameworks. In fact, in some ways, the less 
you know about web development in 
 general, the better off you may be ... that much less to unlearn!</p><p>You do 
need to have a reasonable understanding of HTML, a smattering of XML, and a 
good understanding of basic Java language features, including 
Annotations.</p><h1 
id="TapestryTutorial-TheChallengesofWebApplicationDevelopment">The Challenges 
of Web Application Development</h1><p>If you're used to developing web 
applications using servlets and JSPs, or with Struts, you are simply used to a 
lot of pain. These are environments with few safety net; Struts and the Servlet 
API have no idea how your application is structured, or how the different 
pieces fit together. Any URL can be an action and any action can forward to any 
view (usually a JSP) to provide an HTML response to the web browser. The pain 
is the unending series of small, yet important, decisions you have to make as a 
developer (and communicate to the rest of your team). What are the naming 
conventions for actions, for pages, for attributes stored in the H
 ttpSession or HttpServletRequest? Where do cross-cutting concerns such as 
database transactions, caching and security get implemented (and do you have to 
cut-and-paste Java or XML to make it work?) How are your packages organized ... 
where to the user interface classes go, and where do the data and entity 
objects go? How do you share code from one part of your application to 
another?</p><p>On top of all that, the traditional approaches thrust something 
most unwanted in your face: <em>multi-threaded coding</em>. Remember back to 
Object Oriented Programming 101 where an object was defined as a bundle of data 
and operations on that data? You have to unlearn that lesson as soon as you 
build a traditional web application, because web applications are 
multi-threaded. An application server could be handling dozens or hundreds of 
requests from individual users, each in their own thread, and each sharing the 
exact same objects. Suddenly, you can't store data inside an object (a servlet 
or a 
 Struts Action) because whatever data you store for one user will be instantly 
overwritten by some other user.</p><p>Worse, your objects each have only one 
operation: <code>doGet()</code> or <code>doPost()</code>.</p><p>Meanwhile, most 
of your day-to-day work involves deciding how to package up some data already 
inside a particular Java object and squeeze that data into a URL's query 
parameters, so that you can write more code to convert it back if the user 
clicks that particular link. And don't forget editing a bunch of XML files to 
keep the servlet container, or the Struts framework, aware of these 
decisions.</p><p>Just for laughs, remember that you have to rebuild, redeploy 
and restart your application after virtually any change. Is any of this 
familiar? Then perhaps you'd appreciate something a little <em>less</em> 
familiar: Tapestry.</p><h1 id="TapestryTutorial-TheTapestryWay">The Tapestry 
Way</h1><p>Tapestry uses a very different model: a structured, organized world 
of pages, a
 nd components within pages. Everything has a very specific name (that you 
provide). Once you know the name of a page, you know the location of the Java 
class for that page, the location of the template for that page, and the total 
structure of the page. Tapestry knows all this as well, and can make things 
<strong>just work</strong>.</p><p>As we'll see in the following pages, Tapestry 
lets you code in terms of your objects. You'll barely see any Tapestry classes, 
outside of a few Java annotations. If you have information to store, store it 
as fields of your classes, not inside the HttpServletRequest or HttpSession. If 
you need some code to execute, it's just a simple annotation or method naming 
convention to get Tapestry to invoke that method, at the right time, with the 
right data.</p><p>Tapestry also shields you from most of the multi-threaded 
aspects of web application development. Tapestry manages the life cycle of your 
page and components objects, and the fields of the pages and
  components, in a thread-safe way. Your page and component classes always look 
like simple, standard <a  class="external-link" 
href="http://en.wikipedia.org/wiki/Plain_Old_Java_Object"; 
rel="nofollow">POJOs</a>.</p><p>Tapestry began in January 2000, and it now 
reflects over eighteen years of experience of the entire Tapestry community. 
Tapestry brings to the table all that experience about the best ways to build 
scalable, maintainable, robust, internationalized, and Ajax-enabled 
applications.</p><h1 id="TapestryTutorial-GettingtheTutorialSource">Getting the 
Tutorial Source</h1><p>Although you won't need it, the source code for this 
tutorial is available on <a  class="external-link" 
href="https://github.com/hlship/tapestry5-tutorial"; 
rel="nofollow">GitHub</a>.</p><h1 id="TapestryTutorial-TimetoBegin">Time to 
Begin</h1><p>Okay, enough background. Now let's dig in: <a  
href="dependencies-tools-and-plugins.html">Dependencies, Tools and 
Plugins</a></p><p>&#160;</p></div>
       </div>
 
       <div class="clearer"></div>


Reply via email to