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 > New ></strong> <strong>Project... > Maven > 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> </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  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 > Maven Build...
></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> </p><p>In Eclipse, go to
<strong>File > New ></strong> <strong>Project... > Maven > 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>
 </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  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 > Maven Build...
></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> </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 & 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&sl=5&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) – 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> </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 & 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&sl=5&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) – 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> </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
</t:block>
</html></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&modificationDate=1371888025000&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&modificationDate=1371888025000&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> </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> </p></div>
</div>
<div class="clearer"></div>