Author: buildbot
Date: Sat Nov 22 18:19:55 2014
New Revision: 930122

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/exploring-the-project.html
    websites/production/tapestry/content/loading-the-project-into-eclipse.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 
Sat Nov 22 18:19:55 2014
@@ -74,7 +74,7 @@ table.ScrollbarTable td.ScrollbarParent 
 table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
 table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 
16px;border: none;}
 
-/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td 
colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" 
href="dependencies-tools-and-plugins.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/back_16.gif"; width="16" 
height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" 
width="33%"><a shape="rect" 
href="dependencies-tools-and-plugins.html">Dependencies, Tools and 
Plugins</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" 
width="33%"><sup><a shape="rect" href="tapestry-tutorial.html"><img 
align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/up_16.gif"; width="8" 
height="8"></a></sup><a shape="rect" href="tapestry-tutorial.html">Tapestry 
Tutorial</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" 
width="33%">&#160;<a shape="rect" 
href="loading-the-project-into-eclipse.html">Loading the Project Into 
Eclipse</a></td><td colspan="1" rowspan
 ="1" class="ScrollbarNextIcon"><a shape="rect" 
href="loading-the-project-into-eclipse.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif"; width="16" 
height="16"></a></td></tr></table></div><p>Before we can get down to the fun, 
we have to create an empty application. Tapestry uses a feature of Maven to do 
this: <strong>archetypes</strong> (a too-clever way of saying "project 
templates").</p><p>For the tutorial, we're using a fresh install of Eclipse and 
an empty workspace at <code>/users/joeuser/workspace</code>. You may need to 
adjust a few things for other operating systems or local paths.</p><h2 
id="CreatingTheSkeletonApplication-UsingtheQuickstartArchetype">Using the 
Quickstart Archetype</h2><p>From Eclipse, we'll use a Maven archetype to create 
a skeleton Tapestry project.</p>    <div class="aui-message hint shadowed 
information-macro">
+/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td 
colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" 
href="dependencies-tools-and-plugins.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/back_16.gif"; width="16" 
height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" 
width="33%"><a shape="rect" 
href="dependencies-tools-and-plugins.html">Dependencies, Tools and 
Plugins</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" 
width="33%"><sup><a shape="rect" href="tapestry-tutorial.html"><img 
align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/up_16.gif"; width="8" 
height="8"></a></sup><a shape="rect" href="tapestry-tutorial.html">Tapestry 
Tutorial</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" 
width="33%">&#160;<a shape="rect" href="exploring-the-project.html">Exploring 
the Project</a></td><td colspan="1" rowspan="1" class="ScrollbarN
 extIcon"><a shape="rect" href="exploring-the-project.html"><img align="middle" 
border="0" src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif"; 
width="16" height="16"></a></td></tr></table></div><p>Before we can get down to 
the fun, we have to create an empty application. Tapestry uses a feature of 
Maven to do this: <strong>archetypes</strong> (a too-clever way of saying 
"project templates").</p><p>For the tutorial, we're using a fresh install of 
Eclipse and an empty workspace at <code>/users/joeuser/workspace</code>. You 
may need to adjust a few things for other operating systems or local 
paths.</p><h2 
id="CreatingTheSkeletonApplication-UsingtheQuickstartArchetype">Using the 
Quickstart Archetype</h2><p>From Eclipse, we'll use a Maven archetype to create 
a skeleton Tapestry project.</p>    <div class="aui-message hint shadowed 
information-macro">
                     <p class="title">Maven Behind a Firewall</p>
                             <span class="aui-icon icon-hint">Icon</span>
                 <div class="message-content">
@@ -97,7 +97,13 @@ table.ScrollbarTable td.ScrollbarNextIco
 </div></div><p>Of course, adjust the <code>localRepository</code> element to 
match the correct path for your computer.</p>
                     </div>
     </div>
-<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><img class="confluence-embedded-image" 
src="https://cwiki.apache.org/confluence/download/attachments/23340356/select-a-wizard.png?version=1&amp;modificationDate=1416675284654&amp;api=v2";
 
data-image-src="/confluence/download/attachments/23340356/select-a-wizard.png?version=1&amp;modificationDate=1416675284654&amp;api=v2"></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:</p><p><img class="confluence-embedded-image" 
src="https://cwiki.apache.org/confluence/download/attachments/23340356/add-archetype-catalog.png?version=1&amp;modificationDate=14166753
 54423&amp;api=v2" 
data-image-src="/confluence/download/attachments/23340356/add-archetype-catalog.png?version=1&amp;modificationDate=1416675354423&amp;api=v2"></p><p>As
 shown above, enter <span class="nolink"><span 
class="nolink">"http://tapestry.apache.org";</span></span> in the Catalog File 
field, and "Apache Tapestry" in the Description field.</p><p>Click 
<strong>OK</strong>, then<strong> OK</strong> again.</p><p>On the Select an 
Archetype dialog, select the newly-added Apache Tapestry catalog, then select 
the "quickstart" artifact from the list and click 
<strong>Next</strong>.</p><p><img class="confluence-embedded-image" 
src="https://cwiki.apache.org/confluence/download/attachments/23340356/select-archetype.png?version=1&amp;modificationDate=1416675447884&amp;api=v2";
 
data-image-src="/confluence/download/attachments/23340356/select-archetype.png?version=1&amp;modificationDate=1416675447884&amp;api=v2"></p><p>Fill
 in the Group Id, Artifact Id, Version and Package&#160; as follows:<
 /p><p><img class="confluence-embedded-image" 
src="https://cwiki.apache.org/confluence/download/attachments/23340356/specify-archetype-parameters.png?version=1&amp;modificationDate=1416675494780&amp;api=v2";
 
data-image-src="/confluence/download/attachments/23340356/specify-archetype-parameters.png?version=1&amp;modificationDate=1416675494780&amp;api=v2"></p><p>then
 click Finish.</p>    <div class="aui-message hint shadowed information-macro">
+<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><img class="confluence-embedded-image" 
src="https://cwiki.apache.org/confluence/download/attachments/23340356/select-a-wizard.png?version=1&amp;modificationDate=1416675284654&amp;api=v2";
 
data-image-src="/confluence/download/attachments/23340356/select-a-wizard.png?version=1&amp;modificationDate=1416675284654&amp;api=v2"></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:</p><p><img class="confluence-embedded-image" 
src="https://cwiki.apache.org/confluence/download/attachments/23340356/add-archetype-catalog.png?version=1&amp;modificationDate=14166753
 54423&amp;api=v2" 
data-image-src="/confluence/download/attachments/23340356/add-archetype-catalog.png?version=1&amp;modificationDate=1416675354423&amp;api=v2"></p><p>As
 shown above, enter <span class="nolink"><span 
class="nolink">"http://tapestry.apache.org";</span></span> in the Catalog File 
field, and "Apache Tapestry" in the Description field.</p>    <div 
class="aui-message hint shadowed information-macro">
+                            <span class="aui-icon icon-hint">Icon</span>
+                <div class="message-content">
+                            <p>If you want to try an unreleased (alpha or 
beta) version of Tapestry, use <span 
class="nolink">https://repository.apache.org/content/repositories/staging</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, select the newly-added Apache Tapestry catalog, 
then select the "quickstart" artifact from the list and click 
<strong>Next</strong>.</p><p><img class="confluence-embedded-image" 
src="https://cwiki.apache.org/confluence/download/attachments/23340356/select-archetype.png?version=1&amp;modificationDate=1416675447884&amp;api=v2";
 
data-image-src="/confluence/download/attachments/23340356/select-archetype.png?version=1&amp;modificationDate=1416675447884&amp;api=v2"></p><p>Fill
 in the Group Id, Artifact Id, Version and Package&#160; as follows:</p><p><img 
class="confluence-embedded-image" 
src="https://cwiki.apache.org/confluence/download/attachments/23340356/specify-archetype-parameters.png?version=1&amp;modificationDate=1416675494780&amp;api=v2";
 
data-image-src="/confluence/download/attachments/23340356/specify-archetype-parameters.png?version=1&amp;modificationDate=1416675494780&amp;api=v
 2"></p><p>then click Finish.</p>    <div class="aui-message hint shadowed 
information-macro">
                             <span class="aui-icon icon-hint">Icon</span>
                 <div class="message-content">
                             <p>The first time you use Maven, project creation 
may take several minutes as Maven downloads hundreds of JAR dependencies. 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>
@@ -123,13 +129,7 @@ Application 'app' (version 1.0-SNAPSHOT-
 2011-11-22 11:46:45.636::INFO:  Started [email protected]:8080
 [INFO] Started Jetty Server
 </pre>
-</div></div><p>&#160;</p><p>You can now open a web browser to <a shape="rect" 
class="external-link" href="http://localhost:8080/tutorial1/"; 
>http://localhost:8080/tutorial1/</a> to see the running 
application:</p><p>&#160;</p><p><img class="confluence-embedded-image 
confluence-content-image-border image-left" height="525" width="700" 
src="https://cwiki.apache.org/confluence/download/attachments/23340356/startpage.png?version=6&amp;modificationDate=1416272937000&amp;api=v2";
 
data-image-src="/confluence/download/attachments/23340356/startpage.png?version=6&amp;modificationDate=1416272937000&amp;api=v2"></p><p>&#160;</p><div
 style="clear: both"></div><p style="text-align: left;">The date and time in 
the middle of the page proves that this is a live application.</p><p>This is a 
complete little application; 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 three
  different pages that share a common layout. (<span style="line-height: 
1.4285715;"><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>    <div class="aui-message problem shadowed 
information-macro">
-                            <span class="aui-icon icon-problem">Icon</span>
-                <div class="message-content">
-                            <p>You should hit Control-C in the Terminal window 
to close down Jetty before continuing with the tutorial.</p>
-                    </div>
-    </div>
-<style type="text/css">/*<![CDATA[*/
+</div></div><p>&#160;</p><p>You can now open a web browser to <a shape="rect" 
class="external-link" href="http://localhost:8080/tutorial1/"; 
>http://localhost:8080/tutorial1/</a> to see the running 
application:</p><p>&#160;</p><p><img class="confluence-embedded-image 
confluence-content-image-border image-left" height="525" width="700" 
src="https://cwiki.apache.org/confluence/download/attachments/23340356/startpage.png?version=6&amp;modificationDate=1416272937000&amp;api=v2";
 
data-image-src="/confluence/download/attachments/23340356/startpage.png?version=6&amp;modificationDate=1416272937000&amp;api=v2"></p><p>&#160;</p><div
 style="clear: both"></div><p style="text-align: left;">The date and time in 
the middle of the page proves that this is a live application.</p><p>This is a 
complete little application; 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 three
  different pages that share a common layout. (<span style="line-height: 
1.4285715;"><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>&#160;</p><style type="text/css">/*<![CDATA[*/
 table.ScrollbarTable  {border: none;padding: 3px;width: 100%;padding: 
3px;margin: 0px;background-color: #f0f0f0}
 table.ScrollbarTable td.ScrollbarPrevIcon {text-align: center;width: 
16px;border: none;}
 table.ScrollbarTable td.ScrollbarPrevName {text-align: left;border: none;}
@@ -137,12 +137,7 @@ table.ScrollbarTable td.ScrollbarParent 
 table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
 table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 
16px;border: none;}
 
-/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td 
colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" 
href="dependencies-tools-and-plugins.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/back_16.gif"; width="16" 
height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" 
width="33%"><a shape="rect" 
href="dependencies-tools-and-plugins.html">Dependencies, Tools and 
Plugins</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" 
width="33%"><sup><a shape="rect" href="tapestry-tutorial.html"><img 
align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/up_16.gif"; width="8" 
height="8"></a></sup><a shape="rect" href="tapestry-tutorial.html">Tapestry 
Tutorial</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" 
width="33%">&#160;<a shape="rect" 
href="loading-the-project-into-eclipse.html">Loading the Project Into 
Eclipse</a></td><td colspan="1" rowspan
 ="1" class="ScrollbarNextIcon"><a shape="rect" 
href="loading-the-project-into-eclipse.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif"; width="16" 
height="16"></a></td></tr></table></div>    <div class="aui-message hint 
shadowed information-macro">
-                            <span class="aui-icon icon-hint">Icon</span>
-                <div class="message-content">
-                            <p>If you want to try an unreleased (alpha or 
beta) version of Tapestry, use <span 
class="nolink">https://repository.apache.org/content/repositories/staging</span>
 archetype catalog URL instead.</p>
-                    </div>
-    </div></div>
+/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td 
colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" 
href="dependencies-tools-and-plugins.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/back_16.gif"; width="16" 
height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" 
width="33%"><a shape="rect" 
href="dependencies-tools-and-plugins.html">Dependencies, Tools and 
Plugins</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" 
width="33%"><sup><a shape="rect" href="tapestry-tutorial.html"><img 
align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/up_16.gif"; width="8" 
height="8"></a></sup><a shape="rect" href="tapestry-tutorial.html">Tapestry 
Tutorial</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" 
width="33%">&#160;<a shape="rect" href="exploring-the-project.html">Exploring 
the Project</a></td><td colspan="1" rowspan="1" class="ScrollbarN
 extIcon"><a shape="rect" href="exploring-the-project.html"><img align="middle" 
border="0" src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif"; 
width="16" 
height="16"></a></td></tr></table></div><p>&#160;</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 Sat Nov 22 
18:19:55 2014
@@ -48,19 +48,13 @@
 </div></div>
 
 <div id="top">
-<div id="smallbanner"><div class="searchbox" style="float:right;margin: .3em 
1em .1em 1em">
-<p>
-<span style="color: #999; font-size: 90%">Tapestry docs, issues, wikis &amp; 
blogs:</span>
-</p><form enctype="application/x-www-form-urlencoded" method="get" 
action="http://tapestry.apache.org/search.html";>
+<div id="smallbanner"><div class="searchbox" style="float:right;margin: .3em 
1em .1em 1em"><span style="color: #999; font-size: 90%">Tapestry docs, issues, 
wikis &amp; blogs:</span>
+<form enctype="application/x-www-form-urlencoded" method="get" 
action="http://tapestry.apache.org/search.html";>
   <input type="text" name="q">
   <input type="submit" value="Search">
 </form>
 
-</div>
-
-<div class="emblem" style="float:left"><a shape="rect" href="index.html"><img 
class="confluence-embedded-image" 
src="https://cwiki.apache.org/confluence/download/attachments/21791252/tapestry_s.png?version=3&amp;modificationDate=1293093635000&amp;api=v2";
 
data-image-src="/confluence/download/attachments/21791252/tapestry_s.png?version=3&amp;modificationDate=1293093635000&amp;api=v2"></a></div>
-<div class="title" style="float:left; margin: 0 0 0 3em">
-<h1 id="SmallBanner-PageTitle">Exploring the Project</h1></div></div>
+</div><div class="emblem" style="float:left"><p><a shape="rect" 
href="index.html"><img class="confluence-embedded-image 
confluence-external-resource" 
src="http://tapestry.apache.org/images/tapestry_small.png"; 
data-image-src="http://tapestry.apache.org/images/tapestry_small.png";></a></p></div><div
 class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">Exploring the Project</h1></div></div>
 <div class="clearer"></div>
 </div>
 
@@ -80,7 +74,7 @@ table.ScrollbarTable td.ScrollbarParent 
 table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
 table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 
16px;border: none;}
 
-/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td 
colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" 
href="loading-the-project-into-eclipse.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/back_16.gif"; width="16" 
height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" 
width="33%"><a shape="rect" 
href="loading-the-project-into-eclipse.html">Loading the Project Into 
Eclipse</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" 
width="33%"><sup><a shape="rect" href="tapestry-tutorial.html"><img 
align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/up_16.gif"; width="8" 
height="8"></a></sup><a shape="rect" href="tapestry-tutorial.html">Tapestry 
Tutorial</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" 
width="33%">&#160;<a shape="rect" 
href="implementing-the-hi-lo-guessing-game.html">Implementing the Hi-Lo 
Guessing Game</a></td><td colspa
 n="1" rowspan="1" class="ScrollbarNextIcon"><a shape="rect" 
href="implementing-the-hi-lo-guessing-game.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif"; width="16" 
height="16"></a></td></tr></table></div><p>The layout of the project follows 
the sensible standards promoted by Maven:</p><ul><li>Java source files under 
<code>src/main/java</code></li><li>Web application files under 
<code>src/main/webapp</code> (including 
<code>src/main/webapp/WEB-INF</code>)</li><li>Java test sources under 
<code>src/test/java</code></li><li>Non-code resources (including Tapestry page 
and component templates) under <code>src/main/resources</code> and 
<code>src/test/resources</code></li></ul><p>Let's look at what Maven has 
created from the archetype, starting with the web.xml configuration 
file:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 
1px;"><b>src/main/webapp/WEB-INF
 /web.xml</b></div><div class="codeContent panelContent pdl">
+/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td 
colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" 
href="creating-the-skeleton-application.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/back_16.gif"; width="16" 
height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" 
width="33%"><a shape="rect" 
href="creating-the-skeleton-application.html">Creating The Skeleton 
Application</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" 
width="33%"><sup><a shape="rect" href="tapestry-tutorial.html"><img 
align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/up_16.gif"; width="8" 
height="8"></a></sup><a shape="rect" href="tapestry-tutorial.html">Tapestry 
Tutorial</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" 
width="33%">&#160;<a shape="rect" 
href="implementing-the-hi-lo-guessing-game.html">Implementing the Hi-Lo 
Guessing Game</a></td><td col
 span="1" rowspan="1" class="ScrollbarNextIcon"><a shape="rect" 
href="implementing-the-hi-lo-guessing-game.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif"; width="16" 
height="16"></a></td></tr></table></div><p>The layout of the project follows 
the sensible standards promoted by Maven:</p><ul><li>Java source files under 
<code>src/main/java</code></li><li>Web application files under 
<code>src/main/webapp</code> (including 
<code>src/main/webapp/WEB-INF</code>)</li><li>Java test sources under 
<code>src/test/java</code></li><li>Non-code resources (including Tapestry page 
and component templates) under <code>src/main/resources</code> and 
<code>src/test/resources</code></li></ul><p>Let's look at what Maven has 
created from the archetype, starting with the web.xml configuration 
file:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 
1px;"><b>src/main/webapp/WEB-
 INF/web.xml</b></div><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: xml; gutter: false" 
type="syntaxhighlighter"><![CDATA[&lt;?xml version=&quot;1.0&quot; 
encoding=&quot;UTF-8&quot;?&gt;
 &lt;!DOCTYPE web-app
         PUBLIC &quot;-//Sun Microsystems, Inc.//DTD Web Application 
2.3//EN&quot;
@@ -172,7 +166,7 @@ public class Index
     }
 }
 ]]></script>
-</div></div><p>There's a bit going on in this listing, as the Index page 
attempts to demonstrate a bunch of different ideas in Tapestry. Even so, the 
class is essentially pretty simple: Tapestry pages and components have no base 
classes to extend, no interfaces to implement, and are just a very pure POJO 
(Plain Old Java Object) ... with some special naming conventions and 
annotations for fields and methods.</p><p>You do have to meet the Tapestry 
framework partway:</p><ul><li>You need to put the Java class in the expected 
package, here com.example.tutorial.pages</li><li>The class must be 
public</li><li>You need to make sure there's a public, no-arguments constructor 
(here, the Java compiler has silently provided one for us)</li><li>All 
non-static fields must be <strong>private</strong></li></ul><p>As we saw when 
running the application, the page displays the current date and time, as well 
as a couple of extra links. The <code>currentTime</code> property is where that 
value comes from
 ; shortly we'll see how that value is referenced in the template, so it can be 
extracted from the page and output.</p><p>Tapestry always matches a page class 
to a template; neither is functional without the other. In fact, components 
within a page are treated the same way (except that components do not always 
have templates).</p><p>You will often hear about the <a shape="rect" 
class="external-link" href="http://en.wikipedia.org/wiki/Model_view_controller"; 
>Model-View-Controller pattern</a> (MVC). In Tapestry, the page class acts as 
both the Model (the source of data) and the controller (the logic that responds 
to user interaction). The template is the View in MVC. As a model, the page 
exposes JavaBeans properties that can be referenced in the 
template.</p><p>Let's look at how the component template builds on the Java 
class to provide the full user interface.</p><h1 
id="ExploringtheProject-ComponentTemplate">Component Template</h1><p>Tapestry 
pages are the combination of a POJO Java 
 class with a Tapestry component template. The template has the same name as 
the Java class, but has the extension <code>.tml</code>. Since the Java class 
here is com.example.tutorial.pages.Index, the template file will be located at 
src/main/resource/com/example/tutorial/pages/Index.tml. Ultimately, both the 
Java class and the component template file will be stored in the same folder 
within the deployed WAR file.</p><p>Tapestry component templates are 
well-formed XML documents. This means that you can use any available XML 
editor. Templates may even have a DOCTYPE or an XML schema to validate the 
structure of the template page</p><p></p><p></p><p></p><p></p><p>&lt;style 
type='text/css'&gt;
+</div></div><p>There's a bit going on in this listing, as the Index page 
attempts to demonstrate a bunch of different ideas in Tapestry. Even so, the 
class is essentially pretty simple: Tapestry pages and components have no base 
classes to extend, no interfaces to implement, and are just a very pure POJO 
(Plain Old Java Object) ... with some special naming conventions and 
annotations for fields and methods.</p><p>You do have to meet the Tapestry 
framework partway:</p><ul><li>You need to put the Java class in the expected 
package, here com.example.tutorial.pages</li><li>The class must be 
public</li><li>You need to make sure there's a public, no-arguments constructor 
(here, the Java compiler has silently provided one for us)</li><li>All 
non-static fields must be <strong>private</strong></li></ul><p>As we saw when 
running the application, the page displays the current date and time, as well 
as a couple of extra links. The <code>currentTime</code> property is where that 
value comes from
 ; shortly we'll see how that value is referenced in the template, so it can be 
extracted from the page and output.</p><p>Tapestry always matches a page class 
to a template; neither is functional without the other. In fact, components 
within a page are treated the same way (except that components do not always 
have templates).</p><p>You will often hear about the <a shape="rect" 
class="external-link" href="http://en.wikipedia.org/wiki/Model_view_controller"; 
>Model-View-Controller pattern</a> (MVC). In Tapestry, the page class acts as 
both the Model (the source of data) and the controller (the logic that responds 
to user interaction). The template is the View in MVC. As a model, the page 
exposes JavaBeans properties that can be referenced in the 
template.</p><p>Let's look at how the component template builds on the Java 
class to provide the full user interface.</p><h1 
id="ExploringtheProject-ComponentTemplate">Component Template</h1><p>Tapestry 
pages are the combination of a POJO Java 
 class with a Tapestry component template. The template has the same name as 
the Java class, but has the extension <code>.tml</code>. Since the Java class 
here is com.example.tutorial.pages.Index, the template file will be located at 
src/main/resource/com/example/tutorial/pages/Index.tml. Ultimately, both the 
Java class and the component template file will be stored in the same folder 
within the deployed WAR file.</p><p>Tapestry component templates are 
well-formed XML documents. This means that you can use any available XML 
editor. Templates may even have a DOCTYPE or an XML schema to validate the 
structure of the template 
page</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p>&lt;style 
type='text/css'&gt;
 .FootnoteMarker, .FootnoteNum a {
   background: transparent 
url(/confluence/download/resources/com.adaptavist.confluence.footnoteMacros:footnote/gfx/footnote.png)
 no-repeat top right;
   padding: 1px 2px 0px 1px;
@@ -244,7 +238,7 @@ var footnoteMarkerHighlight = function(i
             1
     </a>
 </sup>
-</p><p></p><p></p><p></p><p></p><p>.</p><p>&#160;</p><p>For the most part, a 
Tapestry component template looks like ordinary XHTML:</p><div class="code 
panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 
1px;"><b>src/main/resources/com/example/tutorial/pages/Index.tml</b></div><div 
class="codeContent panelContent pdl">
+<p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>.</p><p>&#160;</p><p>For
 the most part, a Tapestry component template looks like ordinary 
XHTML:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 
1px;"><b>src/main/resources/com/example/tutorial/pages/Index.tml</b></div><div 
class="codeContent panelContent pdl">
 <script class="theme: Default; brush: xml; gutter: false" 
type="syntaxhighlighter"><![CDATA[&lt;html t:type=&quot;layout&quot; 
title=&quot;tutorial1 Index&quot;
       t:sidebarTitle=&quot;Framework Version&quot;
       xmlns:t=&quot;http://tapestry.apache.org/schema/tapestry_5_3.xsd&quot;
@@ -294,13 +288,13 @@ var footnoteMarkerHighlight = function(i
                             <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</p><p></p><p></p><p></p><p></p><p>
+<p>The goal in Tapestry is for component templates, such as Index.tml, to look 
as much as possible like ordinary, static HTML 
files</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p>
 <sup id="FootnoteMarker2">
     <a shape="rect" class="FootnoteMarker" name="FootnoteMarker2" 
href="#Footnote2" onclick="footnoteHighlight(&quot;2&quot;,true);" 
alt="Footnote: Click here to display the footnote" title="Footnote: Click here 
to display the footnote">
             2
     </a>
 </sup>
-</p><p></p><p></p><p></p><p></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>&#160;</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="aui-message problem shadowed information-macro">
+<p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</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>&#160;</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="aui-message problem shadowed information-macro">
                             <span class="aui-icon icon-problem">Icon</span>
                 <div class="message-content">
                             <p>Part of the concept of the quickstart archetype 
is to demonstrate a bunch of different features, approaches and common patterns 
used in Tapestry, thus we're hitting you with a lot all at once.</p>
@@ -319,37 +313,37 @@ var footnoteMarkerHighlight = function(i
                             <p>If you are coming to Tapestry 5 from Tapestry 4 
or earlier, expansions are a concise replacement for the Insert component.</p>
                     </div>
     </div>
-<p>The value inside the curly braces is a <em>property expression</em>. 
Tapestry uses its own property expression language that is expressive, fast, 
and type-safe</p><p></p><p></p><p></p><p></p><p>
+<p>The value inside the curly braces is a <em>property expression</em>. 
Tapestry uses its own property expression language that is expressive, fast, 
and type-safe</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p>
 <sup id="FootnoteMarker3">
     <a shape="rect" class="FootnoteMarker" name="FootnoteMarker3" 
href="#Footnote3" onclick="footnoteHighlight(&quot;3&quot;,true);" 
alt="Footnote: Click here to display the footnote" title="Footnote: Click here 
to display the footnote">
             3
     </a>
 </sup>
-</p><p></p><p></p><p></p><p></p><p>. More advanced property expressions can 
traverse multiple properties (for example, <code>user.address.city</code>), or 
even invoke public methods. Here the expansion simply reads the 
<code>currentTime</code> property of the page.</p><p>&#160;</p><p>Tapestry 
follows the rules defined by Sun's JavaBeans specification: a property name of 
<code>currentTime</code> maps to two methods: <code>getCurrentTime()</code> and 
<code>setCurrentTime()</code>. If you omit one or the other of these methods, 
the property is either read only (as here), or write 
only</p><p></p><p></p><p></p><p></p><p>
+<p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>. More advanced 
property expressions can traverse multiple properties (for example, 
<code>user.address.city</code>), or even invoke public methods. Here the 
expansion simply reads the <code>currentTime</code> property of the 
page.</p><p>&#160;</p><p>Tapestry follows the rules defined by Sun's JavaBeans 
specification: a property name of <code>currentTime</code> maps to two methods: 
<code>getCurrentTime()</code> and <code>setCurrentTime()</code>. If you omit 
one or the other of these methods, the property is either read only (as here), 
or write only</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p>
 <sup id="FootnoteMarker4">
     <a shape="rect" class="FootnoteMarker" name="FootnoteMarker4" 
href="#Footnote4" onclick="footnoteHighlight(&quot;4&quot;,true);" 
alt="Footnote: Click here to display the footnote" title="Footnote: Click here 
to display the footnote">
             4
     </a>
 </sup>
-</p><p></p><p></p><p></p><p></p><p>.</p><p>&#160;</p><p>Tapestry does go one 
step further: it ignores case when matching properties inside the expansion to 
properties of the page. In the template we could say ${currenttime} or 
${CurrentTime} or any variation, and Tapestry will <em>still</em> invoke the 
<code>getCurrentTime()</code> method.</p><p>Note that in Tapestry it is not 
necessary to configure what object holds the <code>currentTime</code> property; 
a template and a page are always used in combination with each other; 
expressions are always rooted in the page instance, in this case, an instance 
of the Index class.</p><p>The Index.tml template includes a second 
expansion:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>.</p><p>&#160;</p><p>Tapestry
 does go one step further: it ignores case when matching properties inside the 
expansion to properties of the page. In the template we could say 
${currenttime} or ${CurrentTime} or any variation, and Tapestry will 
<em>still</em> invoke the <code>getCurrentTime()</code> method.</p><p>Note that 
in Tapestry it is not necessary to configure what object holds the 
<code>currentTime</code> property; a template and a page are always used in 
combination with each other; expressions are always rooted in the page 
instance, in this case, an instance of the Index class.</p><p>The Index.tml 
template includes a second expansion:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: xml; gutter: false" 
type="syntaxhighlighter"><![CDATA[    &lt;p&gt;${message:greeting}&lt;/p&gt;
 ]]></script>
-</div></div><p>Here <code>greeting</code> is not a property of the page; its 
actually a localized message key. Every Tapestry page and component is allowed 
to have its own message catalog</p><p></p><p></p><p></p><p></p><p>
+</div></div><p>Here <code>greeting</code> is not a property of the page; its 
actually a localized message key. Every Tapestry page and component is allowed 
to have its own message 
catalog</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p>
 <sup id="FootnoteMarker5">
     <a shape="rect" class="FootnoteMarker" name="FootnoteMarker5" 
href="#Footnote5" onclick="footnoteHighlight(&quot;5&quot;,true);" 
alt="Footnote: Click here to display the footnote" title="Footnote: Click here 
to display the footnote">
             5
     </a>
 </sup>
-</p><p></p><p></p><p></p><p></p><p>.</p><p>&#160;</p><div class="code panel 
pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 
1px;"><b>src/main/resources/com/example/tutorial/pages/Index.properties</b></div><div
 class="codeContent panelContent pdl">
+<p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>.</p><p>&#160;</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 
1px;"><b>src/main/resources/com/example/tutorial/pages/Index.properties</b></div><div
 class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[greeting=Welcome to Tapestry 5!  We hope that 
this project template will get you going in style.
 ]]></script>
-</div></div><p>Message catalogs are useful for storing repeating strings 
outside of code or templates, though their primary purpose is related to 
localization of the application (which will be described in more detail in a 
later chapter). Messages that may be used across multiple pages can be stored 
in the application's global message catalog, 
src/main/webapp/WEB-INF/app.properties, instead.</p><p>This "message:" prefix 
is not some special case; there are actually quite a few of these <em>binding 
prefixes</em> built into Tapestry, each having a specific purpose. In fact, 
omitting a binding prefix in an expansion is exactly the same as using the 
"prop:" binding prefix, which means to treat the binding as a property 
expression.</p><p>Expansions are useful for extracting a piece of information 
and rendering it out to the client as a string, but the real heavy lifting of 
Tapestry occurs inside components.</p><h1 
id="ExploringtheProject-ComponentsInsideTemplates">Components Inside Templa
 tes</h1><p>Components can be represented inside a component template in two 
ways</p><p></p><p></p><p></p><p></p><p>
+</div></div><p>Message catalogs are useful for storing repeating strings 
outside of code or templates, though their primary purpose is related to 
localization of the application (which will be described in more detail in a 
later chapter). Messages that may be used across multiple pages can be stored 
in the application's global message catalog, 
src/main/webapp/WEB-INF/app.properties, instead.</p><p>This "message:" prefix 
is not some special case; there are actually quite a few of these <em>binding 
prefixes</em> built into Tapestry, each having a specific purpose. In fact, 
omitting a binding prefix in an expansion is exactly the same as using the 
"prop:" binding prefix, which means to treat the binding as a property 
expression.</p><p>Expansions are useful for extracting a piece of information 
and rendering it out to the client as a string, but the real heavy lifting of 
Tapestry occurs inside components.</p><h1 
id="ExploringtheProject-ComponentsInsideTemplates">Components Inside Templa
 tes</h1><p>Components can be represented inside a component template in two 
ways</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p>
 <sup id="FootnoteMarker6">
     <a shape="rect" class="FootnoteMarker" name="FootnoteMarker6" 
href="#Footnote6" onclick="footnoteHighlight(&quot;6&quot;,true);" 
alt="Footnote: Click here to display the footnote" title="Footnote: Click here 
to display the footnote">
             6
     </a>
 </sup>
-</p><p></p><p></p><p></p><p></p><p>:</p><p>&#160;</p><ul><li>As an ordinary 
element, but with a t:type attribute to define the type of 
component.</li></ul><ul><li>As an element in the Tapestry namespace, in which 
case the element name determines the type.</li></ul><p>Here we've used an 
&lt;html&gt; element to represent the application's Layout component.</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>:</p><p>&#160;</p><ul><li>As
 an ordinary element, but with a t:type attribute to define the type of 
component.</li></ul><ul><li>As an element in the Tapestry namespace, in which 
case the element name determines the type.</li></ul><p>Here we've used an 
&lt;html&gt; element to represent the application's Layout component.</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <script class="theme: Default; brush: xml; gutter: false" 
type="syntaxhighlighter"><![CDATA[&lt;html t:type=&quot;layout&quot; ...&gt; 
   ...
 &lt;/html&gt;
@@ -366,13 +360,13 @@ var footnoteMarkerHighlight = function(i
 
 
 
-<span class="gliffy-container" id="gliffy-container-24346949-7418" 
data-fullwidth="913" data-ceoid="24188263" 
data-edit="${diagramEditLink.getLinkUrl()}" 
data-full="/confluence/plugins/gliffy/viewer.action?inline=false&amp;attachmentId=24346949&amp;attachmentVersion=2&amp;lastPage=%2Fpages%2Fviewpage.action%3FpageId%3D24188263"
 data-filename="Templates and Parameters">
+<span class="gliffy-container" id="gliffy-container-24346949-7996" 
data-fullwidth="913" data-ceoid="24188263" 
data-edit="${diagramEditLink.getLinkUrl()}" 
data-full="/confluence/plugins/gliffy/viewer.action?inline=false&amp;attachmentId=24346949&amp;attachmentVersion=2&amp;lastPage=%2Fpages%2Fviewpage.action%3FpageId%3D24188263"
 data-filename="Templates and Parameters">
 
-    <map id="gliffy-map-24346949-1405" name="gliffy-map-24346949-1405"></map>
+    <map id="gliffy-map-24346949-6882" name="gliffy-map-24346949-6882"></map>
 
-    <img class="gliffy-image gliffy-image-border" 
id="gliffy-image-24346949-7418" 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-1405">
+    <img class="gliffy-image gliffy-image-border" 
id="gliffy-image-24346949-7996" 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-6882">
 
-    <map class="gliffy-dynamic" id="gliffy-dynamic-map-24346949-7418" 
name="gliffy-dynamic-map-24346949-7418"></map>
+    <map class="gliffy-dynamic" id="gliffy-dynamic-map-24346949-7996" 
name="gliffy-dynamic-map-24346949-7996"></map>
 </span>
 
 
@@ -399,7 +393,7 @@ var footnoteMarkerHighlight = function(i
                             <p>This level of detail reflects that the 
application has been configured to run in <em>development mode</em> instead of 
<em>production mode</em>. In production mode, the exception report would simply 
be the top level exception message. However, most production applications go 
further and customize how Tapestry handles and reports exceptions.</p>
                     </div>
     </div>
-<p>There was a bunch of other stuff on this page, related to links and Ajax 
and other things, that we'll ignore for the 
moment.</p><hr><p>&#160;</p><p></p><p></p><p></p><p></p><p></p><p><table 
class="Footnotes" style="width: 100%; border:none;" cellspacing="0" 
cellpadding="0" summary="This table contains one or more notes for references 
made elsewhere on the page."><caption 
class="accessibility">Footnotes</caption><thead class="accessibility"><tr 
class="accessibility"><th colspan="1" rowspan="1" class="accessibility" 
id="footnote-th1">Reference</th><th colspan="1" rowspan="1" 
class="accessibility" id="footnote-th2">Notes</th></tr></thead><tbody><tr 
name="Footnote1"><td colspan="1" rowspan="1" valign="top" class="FootnoteNum" 
headings="footnote-th1">
+<p>There was a bunch of other stuff on this page, related to links and Ajax 
and other things, that we'll ignore for the 
moment.</p><hr><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p><table 
class="Footnotes" style="width: 100%; border:none;" cellspacing="0" 
cellpadding="0" summary="This table contains one or more notes for references 
made elsewhere on the page."><caption 
class="accessibility">Footnotes</caption><thead class="accessibility"><tr 
class="accessibility"><th colspan="1" rowspan="1" class="accessibility" 
id="footnote-th1">Reference</th><th colspan="1" rowspan="1" 
class="accessibility" id="footnote-th2">Notes</th></tr></thead><tbody><tr 
name="Footnote1"><td colspan="1" rowspan="1" valign="top" class="FootnoteNum" 
headings="footnote-th1">
         <a shape="rect" id="FootnoteNum1" href="#FootnoteMarker1" 
onclick="footnoteMarkerHighlight(&quot;1&quot;);" 
onmouseover="footnoteHighlight(&quot;1&quot;,false);" alt="Footnote: Click to 
return to reference in text" title="Footnote: Click to return to reference in 
text">
             1
         </a>
@@ -436,7 +430,7 @@ var footnoteMarkerHighlight = function(i
         </a>
       </td><td colspan="1" rowspan="1" valign="top" class="Footnote" 
id="Footnote6" width="100%" headings="footnote-th2">
           Ok, there's a third way as well, which will be discussed in good 
time.
-      </td></tr></tbody></table></p><p></p><p></p><p></p><p></p><style 
type="text/css">/*<![CDATA[*/
+      
</td></tr></tbody></table></p><p>&#160;</p><p>&#160;</p><p>&#160;</p><style 
type="text/css">/*<![CDATA[*/
 table.ScrollbarTable  {border: none;padding: 3px;width: 100%;padding: 
3px;margin: 0px;background-color: #f0f0f0}
 table.ScrollbarTable td.ScrollbarPrevIcon {text-align: center;width: 
16px;border: none;}
 table.ScrollbarTable td.ScrollbarPrevName {text-align: left;border: none;}
@@ -444,7 +438,7 @@ table.ScrollbarTable td.ScrollbarParent 
 table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
 table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 
16px;border: none;}
 
-/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td 
colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" 
href="loading-the-project-into-eclipse.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/back_16.gif"; width="16" 
height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" 
width="33%"><a shape="rect" 
href="loading-the-project-into-eclipse.html">Loading the Project Into 
Eclipse</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" 
width="33%"><sup><a shape="rect" href="tapestry-tutorial.html"><img 
align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/up_16.gif"; width="8" 
height="8"></a></sup><a shape="rect" href="tapestry-tutorial.html">Tapestry 
Tutorial</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" 
width="33%">&#160;<a shape="rect" 
href="implementing-the-hi-lo-guessing-game.html">Implementing the Hi-Lo 
Guessing Game</a></td><td colspa
 n="1" rowspan="1" class="ScrollbarNextIcon"><a shape="rect" 
href="implementing-the-hi-lo-guessing-game.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif"; width="16" 
height="16"></a></td></tr></table></div></div>
+/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td 
colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" 
href="creating-the-skeleton-application.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/back_16.gif"; width="16" 
height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" 
width="33%"><a shape="rect" 
href="creating-the-skeleton-application.html">Creating The Skeleton 
Application</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" 
width="33%"><sup><a shape="rect" href="tapestry-tutorial.html"><img 
align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/up_16.gif"; width="8" 
height="8"></a></sup><a shape="rect" href="tapestry-tutorial.html">Tapestry 
Tutorial</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" 
width="33%">&#160;<a shape="rect" 
href="implementing-the-hi-lo-guessing-game.html">Implementing the Hi-Lo 
Guessing Game</a></td><td col
 span="1" rowspan="1" class="ScrollbarNextIcon"><a shape="rect" 
href="implementing-the-hi-lo-guessing-game.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif"; width="16" 
height="16"></a></td></tr></table></div></div>
 </div>
 
 <div class="clearer"></div>

Modified: 
websites/production/tapestry/content/loading-the-project-into-eclipse.html
==============================================================================
--- websites/production/tapestry/content/loading-the-project-into-eclipse.html 
(original)
+++ websites/production/tapestry/content/loading-the-project-into-eclipse.html 
Sat Nov 22 18:19:55 2014
@@ -26,16 +26,6 @@
   </title>
   <link type="text/css" rel="stylesheet" href="/resources/space.css">
 
-    <link href='/resources/highlighter/styles/shCoreCXF.css' rel='stylesheet' 
type='text/css' />
-  <link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet' 
type='text/css' />
-  <script src='/resources/highlighter/scripts/shCore.js' 
type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushJava.js' 
type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushXml.js' 
type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushPlain.js' 
type='text/javascript'></script>
-  <script type="text/javascript">
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all();
-  </script>
 
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -61,92 +51,12 @@
 <div class="clearer"></div>
 
   <div id="breadcrumbs">
-        <a href="index.html">Apache Tapestry</a>&nbsp;&gt;&nbsp;<a 
href="documentation.html">Documentation</a>&nbsp;&gt;&nbsp;<a 
href="tapestry-tutorial.html">Tapestry Tutorial</a>&nbsp;&gt;&nbsp;<a 
href="loading-the-project-into-eclipse.html">Loading the Project Into 
Eclipse</a>
+        <a href="index.html">Apache Tapestry</a>&nbsp;&gt;&nbsp;<a 
href="index.html">Index</a>&nbsp;&gt;&nbsp;<a 
href="redirects.html">Redirects</a>&nbsp;&gt;&nbsp;<a 
href="loading-the-project-into-eclipse.html">Loading the Project Into 
Eclipse</a>
     <a class="edit" title="Edit this page (requires approval -- just ask on 
the mailing list)" 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=24188253";>edit</a>
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><style type="text/css">/*<![CDATA[*/
-table.ScrollbarTable  {border: none;padding: 3px;width: 100%;padding: 
3px;margin: 0px;background-color: #f0f0f0}
-table.ScrollbarTable td.ScrollbarPrevIcon {text-align: center;width: 
16px;border: none;}
-table.ScrollbarTable td.ScrollbarPrevName {text-align: left;border: none;}
-table.ScrollbarTable td.ScrollbarParent {text-align: center;border: none;}
-table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
-table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 
16px;border: none;}
-
-/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td 
colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" 
href="creating-the-skeleton-application.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/back_16.gif"; width="16" 
height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" 
width="33%"><a shape="rect" 
href="creating-the-skeleton-application.html">Creating The Skeleton 
Application</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" 
width="33%"><sup><a shape="rect" href="tapestry-tutorial.html"><img 
align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/up_16.gif"; width="8" 
height="8"></a></sup><a shape="rect" href="tapestry-tutorial.html">Tapestry 
Tutorial</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" 
width="33%">&#160;<a shape="rect" href="exploring-the-project.html">Exploring 
the Project</a></td><td colspan="1" rowspan="1" class="Sc
 rollbarNextIcon"><a shape="rect" href="exploring-the-project.html"><img 
align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif"; width="16" 
height="16"></a></td></tr></table></div><p>The first step is to ask Maven to 
generate the Eclipse control files (<code>.classpath</code> and 
<code>.project</code>) for us:</p><div class="preformatted panel" 
style="border-width: 1px;"><div class="preformattedContent panelContent">
-<pre>$ mvn eclipse:eclipse -DdownloadSources=true
-[INFO] Scanning for projects...
-Downloading: 
http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-war-plugin/2.1.1/maven-war-plugin-2.1.1.pom
-Downloaded: 
http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-war-plugin/2.1.1/maven-war-plugin-2.1.1.pom
 (7 KB at 7.1 KB/sec)
-Downloading: 
http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-war-plugin/2.1.1/maven-war-plugin-2.1.1.jar
-Downloaded: 
http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-war-plugin/2.1.1/maven-war-plugin-2.1.1.jar
 (76 KB at 83.4 KB/sec)
-Downloading: 
http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-eclipse-plugin/maven-metadata.xml
-Downloaded: 
http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-eclipse-plugin/maven-metadata.xml
 (680 B at 1.9 KB/sec)
-Downloading: 
http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-eclipse-plugin/2.8/maven-eclipse-plugin-2.8.pom
-Downloaded: 
http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-eclipse-plugin/2.8/maven-eclipse-plugin-2.8.pom
 (12 KB at 22.9 KB/sec)
-Downloading: 
http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-plugins/17/maven-plugins-17.pom
-Downloaded: 
http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-plugins/17/maven-plugins-17.pom
 (13 KB at 25.6 KB/sec)
-Downloading: 
http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-eclipse-plugin/2.8/maven-eclipse-plugin-2.8.jar
-Downloaded: 
http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-eclipse-plugin/2.8/maven-eclipse-plugin-2.8.jar
 (202 KB at 237.8 KB/sec)
-[INFO]                                                                         
-[INFO] ------------------------------------------------------------------------
-[INFO] Building tutorial1 Tapestry 5 Application 1.0-SNAPSHOT
-[INFO] ------------------------------------------------------------------------
-[INFO] 
-[INFO] &gt;&gt;&gt; maven-eclipse-plugin:2.8:eclipse (default-cli) @ tutorial1 
&gt;&gt;&gt;
-[INFO] 
-[INFO] &lt;&lt;&lt; maven-eclipse-plugin:2.8:eclipse (default-cli) @ tutorial1 
&lt;&lt;&lt;
-[INFO] 
-[INFO] --- maven-eclipse-plugin:2.8:eclipse (default-cli) @ tutorial1 ---
-Downloading: 
http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-archiver/1.0-alpha-7/plexus-archiver-1.0-alpha-7.pom
-Downloaded: 
http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-archiver/1.0-alpha-7/plexus-archiver-1.0-alpha-7.pom
 (2 KB at 2.3 KB/sec)
-Downloading: 
http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-components/1.1.6/plexus-components-1.1.6.pom
-Downloaded: 
http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-components/1.1.6/plexus-components-1.1.6.pom
 (2 KB at 3.7 KB/sec)
-Downloading: 
http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/1.2/plexus-utils-1.2.pom
-Downloaded: 
http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/1.2/plexus-utils-1.2.pom
 (767 B at 1.5 KB/sec)
-
-(...hundreds of lines omitted here...)
-
-Downloading: 
https://repository.apache.org/content/groups/staging/com/google/inject/guice/2.0/guice-2.0-sources.jar
-Downloading: 
http://repo1.maven.org/maven2/com/google/inject/guice/2.0/guice-2.0-sources.jar
-Downloading: 
https://repository.apache.org/content/groups/staging/org/apache/tapestry/tapestry-yuicompressor/5.3/tapestry-yuicompressor-5.3-sources.jar
-Downloaded: 
https://repository.apache.org/content/groups/staging/org/apache/tapestry/tapestry-yuicompressor/5.3/tapestry-yuicompressor-5.3-sources.jar
 (7 KB at 25.8 KB/sec)
-Downloading: 
https://repository.apache.org/content/groups/staging/rhino/js/1.6R7/js-1.6R7-sources.jar
-Downloading: http://repo1.maven.org/maven2/rhino/js/1.6R7/js-1.6R7-sources.jar
-[INFO] Wrote settings to 
/Users/hlship/Documents/workspace/tutorial1/.settings/org.eclipse.jdt.core.prefs
-[INFO] Wrote Eclipse project for "tutorial1" to 
/Users/hlship/Documents/workspace/tutorial1.
-[INFO] 
-       Sources for some artifacts are not available.
-       List of artifacts without a source archive:
-         o org.beanshell:bsh:2.0b4
-         o xalan:serializer:2.7.1
-         o org.apache.tomcat:catalina:6.0.30
-         o org.apache.tomcat:servlet-api:6.0.30
-         o org.apache.tomcat:juli:6.0.30
-         o org.apache.tomcat:annotations-api:6.0.30
-         o org.apache.tomcat:coyote:6.0.30
-         o org.apache.tomcat:dbcp:6.0.30
-
-[INFO] ------------------------------------------------------------------------
-[INFO] BUILD SUCCESS
-[INFO] ------------------------------------------------------------------------
-[INFO] Total time: 39.526s
-[INFO] Finished at: Fri Mar 1 11:52:57 PST 2013
-[INFO] Final Memory: 9M/81M
-[INFO] ------------------------------------------------------------------------
-~/Documents/workspace/tutorial1
-
-</pre>
-</div></div><p>At this point, Maven has created the Eclipse 
<code>.project</code> and <code>.classpath</code> files, and we can import the 
project. In addition, since we specified <code>-DdownloadSources=true</code>, 
Maven has also downloaded the sources of each library and linked to the source 
JAR (where available); that means we can see the sources for any Tapestry 
classes right inside Eclipse, which is very useful when debugging or 
exploring.</p><p>At this point, we are ready to import the project created by 
Maven into Eclipse so we can start working with it. Launch Eclipse and switch 
over to the Java Perspective.</p><p>Right click inside the Package Explorer 
view and select <strong>Import ...</strong></p><p><img 
class="confluence-embedded-image confluence-thumbnail" 
src="loading-the-project-into-eclipse.thumbs/eclipse-java-persp.png" 
data-image-src="/confluence/download/attachments/24188253/eclipse-java-persp.png?version=1&amp;modificationDate=1291067922000&amp;api=v2"></p><p>Ch
 oose the "existing projects" option:</p><p><img 
class="confluence-embedded-image confluence-thumbnail" 
src="loading-the-project-into-eclipse.thumbs/eclipse-import.png" 
data-image-src="/confluence/download/attachments/24188253/eclipse-import.png?version=1&amp;modificationDate=1291067922000&amp;api=v2"></p><p>Now
 select the folder created by Maven:</p><p><img 
class="confluence-embedded-image confluence-thumbnail" 
src="loading-the-project-into-eclipse.thumbs/eclipse-import-folder.png" 
data-image-src="/confluence/download/attachments/24188253/eclipse-import-folder.png?version=1&amp;modificationDate=1291067922000&amp;api=v2"></p><p>When
 you click the Finish button, the project will be imported into the Eclipse 
workspace.</p><p><img class="confluence-embedded-image confluence-thumbnail" 
src="loading-the-project-into-eclipse.thumbs/eclipse-project-errors.png" 
data-image-src="/confluence/download/attachments/24188253/eclipse-project-errors.png?version=1&amp;modificationDate=1291067922000&am
 p;api=v2"></p><p>However; there are many errors. Maven expects that you will 
configure a classpath variable, <code>M2_REPO</code>, that points at your local 
repository; a directory in your home directory that stores all those downloaded 
JARs and other files. Open Eclipse's preferences panel and navigate to 
<strong>Java &gt; Build Path &gt; Classpath Variables</strong>:</p><p><img 
class="confluence-embedded-image confluence-thumbnail" 
src="loading-the-project-into-eclipse.thumbs/eclipse-classpath-vars.png" 
data-image-src="/confluence/download/attachments/24188253/eclipse-classpath-vars.png?version=1&amp;modificationDate=1291067921000&amp;api=v2"></p><p>Click
 the <strong>New</strong> button, and enter the new variable (you'll have to 
adjust this for your operating system and local paths):</p><p><img 
class="confluence-embedded-image confluence-thumbnail" 
src="loading-the-project-into-eclipse.thumbs/eclipse-new-var.png" 
data-image-src="/confluence/download/attachments/24188253/eclipse-n
 
ew-var.png?version=1&amp;modificationDate=1291067942000&amp;api=v2"></p><p>Eclipse
 will ask to perform a clean build, and the errors will be gone once it has 
done so.</p><h1 
id="LoadingtheProjectIntoEclipse-RunningtheApplicationinsideEclipse">Running 
the Application inside Eclipse</h1><p>The task is to set up Jetty to run our 
application directly out of our Eclipse workspace. This is a great way to 
develop web applications, since we don't want to have to use Maven to compile 
and run the application ... or worse yet, use Maven to package and deploy the 
application. That's for later, when we want to put the application into 
production. For development, we want a fast, agile environment that can keep up 
with our changes, and that means we can't wait for redeploys and 
restarts.</p><p>Choose the <strong>Run ...</strong> item from the Eclipse 
<strong>Run</strong> menu to get the launch configuration dialog:</p><p><img 
class="confluence-embedded-image confluence-thumbnail" src="loading-the
 -project-into-eclipse.thumbs/eclipse-run.png" 
data-image-src="/confluence/download/attachments/24188253/eclipse-run.png?version=1&amp;modificationDate=1291068594000&amp;api=v2"></p><p>Select
 <strong>Jetty Webapp</strong> and click the <strong>New</strong> button, then 
fill in a few values:</p><p><img class="confluence-embedded-image 
confluence-thumbnail" 
src="loading-the-project-into-eclipse.thumbs/eclipse-launch.png" 
data-image-src="/confluence/download/attachments/24188253/eclipse-launch.png?version=2&amp;modificationDate=1321979047000&amp;api=v2"></p><p>You
 will need to click the "Show advanced Options" checkbox, then uncheck "SSL" 
and "Enable Scanner".</p><p>Tapestry runs best with a couple of additional 
options; click the "Arguments" tab and enter the following VM Arguments: 
<code>-XX:MaxPermSize=256M -Xmx600m 
-Dtapestry.execution-mode=development</code></p><p><img 
class="confluence-embedded-image confluence-thumbnail" 
src="loading-the-project-into-eclipse.thumbs/eclipse-launch
 -vmargs.png" 
data-image-src="/confluence/download/attachments/24188253/eclipse-launch-vmargs.png?version=1&amp;modificationDate=1321979336000&amp;api=v2"></p><p>Tapestry
 uses more PermGen space (the part of Java memory used for loading classes) 
than a typical application, and uses more heap memory than the default; the 
above settings are good for a medium-to-large size Tapestry application, and 
will keep Java from running the Garbage Collector too often. The setting of 
tapestry.execution mode tells Tapestry to run in development mode, where 
runtime exceptions are reported more exhaustively.</p><p>With those settings in 
place, you can then click <strong>Run</strong> and Jetty will launch (it takes 
only a few seconds):</p><p>Once you click Run, Jetty will start up and launch 
(it should take a second or two).</p><p><img class="confluence-embedded-image 
confluence-thumbnail" 
src="loading-the-project-into-eclipse.thumbs/eclipse-jetty.png" 
data-image-src="/confluence/download/attachments/
 
24188253/eclipse-jetty.png?version=3&amp;modificationDate=1321979524000&amp;api=v2"></p><p>You
 may now start the application with the URL <a shape="rect" 
class="external-link" href="http://localhost:8080/tutorial1/"; 
>http://localhost:8080/tutorial1/</a></p><style type="text/css">/*<![CDATA[*/
-table.ScrollbarTable  {border: none;padding: 3px;width: 100%;padding: 
3px;margin: 0px;background-color: #f0f0f0}
-table.ScrollbarTable td.ScrollbarPrevIcon {text-align: center;width: 
16px;border: none;}
-table.ScrollbarTable td.ScrollbarPrevName {text-align: left;border: none;}
-table.ScrollbarTable td.ScrollbarParent {text-align: center;border: none;}
-table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
-table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 
16px;border: none;}
-
-/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td 
colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" 
href="creating-the-skeleton-application.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/back_16.gif"; width="16" 
height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" 
width="33%"><a shape="rect" 
href="creating-the-skeleton-application.html">Creating The Skeleton 
Application</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" 
width="33%"><sup><a shape="rect" href="tapestry-tutorial.html"><img 
align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/up_16.gif"; width="8" 
height="8"></a></sup><a shape="rect" href="tapestry-tutorial.html">Tapestry 
Tutorial</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" 
width="33%">&#160;<a shape="rect" href="exploring-the-project.html">Exploring 
the Project</a></td><td colspan="1" rowspan="1" class="Sc
 rollbarNextIcon"><a shape="rect" href="exploring-the-project.html"><img 
align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif"; width="16" 
height="16"></a></td></tr></table></div></div>
+<div id="ConfluenceContent"><p>This page is no longer used. See <a 
shape="rect" href="tapestry-tutorial.html">Tapestry Tutorial</a></p></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/tapestry-tutorial.html
==============================================================================
--- websites/production/tapestry/content/tapestry-tutorial.html (original)
+++ websites/production/tapestry/content/tapestry-tutorial.html Sat Nov 22 
18:19:55 2014
@@ -48,19 +48,13 @@
 </div></div>
 
 <div id="top">
-<div id="smallbanner"><div class="searchbox" style="float:right;margin: .3em 
1em .1em 1em">
-<p>
-<span style="color: #999; font-size: 90%">Tapestry docs, issues, wikis &amp; 
blogs:</span>
-</p><form enctype="application/x-www-form-urlencoded" method="get" 
action="http://tapestry.apache.org/search.html";>
+<div id="smallbanner"><div class="searchbox" style="float:right;margin: .3em 
1em .1em 1em"><span style="color: #999; font-size: 90%">Tapestry docs, issues, 
wikis &amp; blogs:</span>
+<form enctype="application/x-www-form-urlencoded" method="get" 
action="http://tapestry.apache.org/search.html";>
   <input type="text" name="q">
   <input type="submit" value="Search">
 </form>
 
-</div>
-
-<div class="emblem" style="float:left"><a shape="rect" href="index.html"><img 
class="confluence-embedded-image" 
src="https://cwiki.apache.org/confluence/download/attachments/21791252/tapestry_s.png?version=3&amp;modificationDate=1293093635000&amp;api=v2";
 
data-image-src="/confluence/download/attachments/21791252/tapestry_s.png?version=3&amp;modificationDate=1293093635000&amp;api=v2"></a></div>
-<div class="title" style="float:left; margin: 0 0 0 3em">
-<h1 id="SmallBanner-PageTitle">Tapestry Tutorial</h1></div></div>
+</div><div class="emblem" style="float:left"><p><a shape="rect" 
href="index.html"><img class="confluence-embedded-image 
confluence-external-resource" 
src="http://tapestry.apache.org/images/tapestry_small.png"; 
data-image-src="http://tapestry.apache.org/images/tapestry_small.png";></a></p></div><div
 class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">Tapestry Tutorial</h1></div></div>
 <div class="clearer"></div>
 </div>
 
@@ -88,7 +82,7 @@
                     <span class="icon icon-page" title="Page">Page:</span>     
       </div>
 
             <div class="details">
-                            <a shape="rect" 
href="tapestry-tutorial.html">Tapestry Tutorial</a>
+                            <a shape="rect" 
href="tapestry-for-jsf-users.html">Tapestry for JSF Users</a>
                     
                 
                             </div>
@@ -97,7 +91,7 @@
                     <span class="icon icon-page" title="Page">Page:</span>     
       </div>
 
             <div class="details">
-                            <a shape="rect" 
href="tapestry-for-jsf-users.html">Tapestry for JSF Users</a>
+                            <a shape="rect" 
href="principles.html">Principles</a>
                     
                 
                             </div>
@@ -106,7 +100,7 @@
                     <span class="icon icon-page" title="Page">Page:</span>     
       </div>
 
             <div class="details">
-                            <a shape="rect" 
href="principles.html">Principles</a>
+                            <a shape="rect" 
href="getting-started.html">Getting Started</a>
                     
                 
                             </div>
@@ -115,12 +109,12 @@
                     <span class="icon icon-page" title="Page">Page:</span>     
       </div>
 
             <div class="details">
-                            <a shape="rect" 
href="getting-started.html">Getting Started</a>
+                            <a shape="rect" 
href="tapestry-tutorial.html">Tapestry Tutorial</a>
                     
                 
                             </div>
         </li></ul>
-</div><h1 id="TapestryTutorial-TableofContents">Table of 
Contents</h1><p></p><ul class="childpages-macro"><li><a shape="rect" 
href="dependencies-tools-and-plugins.html">Dependencies, Tools and 
Plugins</a></li><li><a shape="rect" 
href="creating-the-skeleton-application.html">Creating The Skeleton 
Application</a></li><li><a shape="rect" 
href="loading-the-project-into-eclipse.html">Loading the Project Into 
Eclipse</a></li><li><a shape="rect" href="exploring-the-project.html">Exploring 
the Project</a></li><li><a shape="rect" 
href="implementing-the-hi-lo-guessing-game.html">Implementing the Hi-Lo 
Guessing Game</a></li><li><a shape="rect" 
href="using-beaneditform-to-create-user-forms.html">Using BeanEditForm To 
Create User Forms</a></li><li><a shape="rect" 
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 5 
app
 lications. It doesn't matter whether you have experience with Tapestry 4 (or 
Tapestry 3, for that matter) or whether you are completely new to Tapestry. In 
fact, in some ways, the less you know about web development in general, and 
older Tapestry versions in particular, 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 actio
 n 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 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 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, 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 ju
 st 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 shape="rect" class="external-link" 
href="http://en.wikipedia.org/wiki/Plain_Old_Java_Object"; 
>POJOs</a>.</p><p>Tapestry began in January 2000, and it now reflects over ten 
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 more recently) Ajax-enabled applications. 
Tapestry 5 represents a completely new code base (compared to Tapestry 4) 
designed to simplify the Tapestry coding m
 odel while at the same time extending the power of Tapestry and improving 
performance.</p><h1 id="TapestryTutorial-GettingTheTutorialSource">Getting The 
Tutorial Source</h1><p>The source code for the Tapestry tutorial is available 
on <a shape="rect" class="external-link" 
href="https://github.com/hlship/tapestry5-tutorial"; >GitHub</a> (although you 
won't need it to complete the tutorial).</p><h1 
id="TapestryTutorial-TimetoBegin">Time to Begin</h1><p>Okay, enough background. 
Now let's get started on the tutorial: <a shape="rect" 
href="dependencies-tools-and-plugins.html">Dependencies, Tools and 
Plugins</a></p></div>
+</div><h1 id="TapestryTutorial-TableofContents">Table of 
Contents</h1><p></p><ul class="childpages-macro"><li><a shape="rect" 
href="dependencies-tools-and-plugins.html">Dependencies, Tools and 
Plugins</a></li><li><a shape="rect" 
href="creating-the-skeleton-application.html">Creating The Skeleton 
Application</a></li><li><a shape="rect" 
href="exploring-the-project.html">Exploring the Project</a></li><li><a 
shape="rect" href="implementing-the-hi-lo-guessing-game.html">Implementing the 
Hi-Lo Guessing Game</a></li><li><a shape="rect" 
href="using-beaneditform-to-create-user-forms.html">Using BeanEditForm To 
Create User Forms</a></li><li><a shape="rect" 
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 5 
applications. It doesn't matter whether you have experience with Tapestry 4 (or 
Tapestry 3, for that matter) 
 or whether you are completely new to Tapestry. In fact, in some ways, the less 
you know about web development in general, and older Tapestry versions in 
particular, 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. T
 he 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 
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-threade
 d. 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? Th
 en 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, 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 tim
 e, 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 shape="rect" class="external-link" 
href="http://en.wikipedia.org/wiki/Plain_Old_Java_Object"; 
>POJOs</a>.</p><p>Tapestry began in January 2000, and it now reflects over ten 
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 more recently) 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="Tapestry
 Tutorial-GettingTheTutorialSource">Getting The Tutorial Source</h1><p>The 
source code for the Tapestry tutorial is available on <a shape="rect" 
class="external-link" href="https://github.com/hlship/tapestry5-tutorial"; 
>GitHub</a> (although you won't need it to complete the tutorial).</p><h1 
id="TapestryTutorial-TimetoBegin">Time to Begin</h1><p>Okay, enough background. 
Now let's get started on the tutorial: <a shape="rect" 
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