You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by bu...@apache.org on 2013/07/13 20:20:44 UTC

svn commit: r869367 - in /websites/production/tapestry/content: cache/main.pageCache tapestry-for-jsf-users.html

Author: buildbot
Date: Sat Jul 13 18:20:44 2013
New Revision: 869367

Log:
Production update by buildbot for tapestry

Modified:
    websites/production/tapestry/content/cache/main.pageCache
    websites/production/tapestry/content/tapestry-for-jsf-users.html

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

Modified: websites/production/tapestry/content/tapestry-for-jsf-users.html
==============================================================================
--- websites/production/tapestry/content/tapestry-for-jsf-users.html (original)
+++ websites/production/tapestry/content/tapestry-for-jsf-users.html Sat Jul 13 18:20:44 2013
@@ -169,7 +169,7 @@ public class HelloWorld {
 <p>JSF uses the Unified Expression Language with the #{...} or ${...} syntax for accessing Backing Bean properties. For its part, Tapestry uses the ${...} syntax with a similar but more limited expression language called <a shape="rect" href="property-expressions.html" title="Property Expressions">Property Expressions</a>. Both allow easy access to properties via the usual JavaBean conventions, but with Tapestry you don't have to specify which class the expression starts at (because it always starts at the component class corresponding to the template). Some comparisons:</p>
 
 <div class="table-wrap">
-<table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><th colspan="1" rowspan="1" class="confluenceTh"> JSF Syntax </th><th colspan="1" rowspan="1" class="confluenceTh"> Tapestry Syntax </th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> Property (calls getMyProperty() or setMyProperty()) </td><td colspan="1" rowspan="1" class="confluenceTd"> #{employeeBean.employeeName} </td><td colspan="1" rowspan="1" class="confluenceTd"> ${employeeName} </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> Boolean property (calls isHourly() or setHourly()) </td><td colspan="1" rowspan="1" class="confluenceTd"> #{employeeBean.hourly} </td><td colspan="1" rowspan="1" class="confluenceTd"> ${hourly} </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> Property chain </td><td colspan="1" rowspan="1" class="confluenceTd"> #{employeeBean.address.street} </td><td colspan="1" rowspan="1" class="confluenceTd"> ${address.stre
 et} </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> Null-safe property chain </td><td colspan="1" rowspan="1" class="confluenceTd"> #{employeeBean.address.street} </td><td colspan="1" rowspan="1" class="confluenceTd"> ${address?.street} </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> 5th element in a List </td><td colspan="1" rowspan="1" class="confluenceTd"> #{employeeBean.employees[5].name} </td><td colspan="1" rowspan="1" class="confluenceTd"> ${employees.get(5).name} </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> Negation </td><td colspan="1" rowspan="1" class="confluenceTd"> #{! employeeBean.hourly} </td><td colspan="1" rowspan="1" class="confluenceTd"> ${! hourly} </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> Arithmetic &amp; relational operators </td><td colspan="1" rowspan="1" class="confluenceTd"> +-*/% div mod </td><td colspan="1" rowspan="1" class="confluenceTd"> <em>not available</em> </td></tr><tr><td co
 lspan="1" rowspan="1" class="confluenceTd"> Relational operators </td><td colspan="1" rowspan="1" class="confluenceTd"> == != ne &lt; lt &gt; gt &lt;= le &gt;= ge </td><td colspan="1" rowspan="1" class="confluenceTd"> <em>not available</em> </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> Ternary operator </td><td colspan="1" rowspan="1" class="confluenceTd"> #{myBean.foo &lt; 0 ? 'bar' : 'baz'} </td><td colspan="1" rowspan="1" class="confluenceTd"> <em>not available</em> </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> Method calling </td><td colspan="1" rowspan="1" class="confluenceTd"> #{myBean.employees.size()} </td><td colspan="1" rowspan="1" class="confluenceTd"> ${employees.size()} </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> Iterated Range </td><td colspan="1" rowspan="1" class="confluenceTd"> <em>not avaialble</em> </td><td colspan="1" rowspan="1" class="confluenceTd"> ${1..10} </td></tr><tr><td colspan="1" rowspan="1" class=
 "confluenceTd"> Iterated Range (calculated) </td><td colspan="1" rowspan="1" class="confluenceTd"> <em>not avaialble</em> </td><td colspan="1" rowspan="1" class="confluenceTd"> ${1..groupList.size()} </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> List </td><td colspan="1" rowspan="1" class="confluenceTd"> <em>not available</em> </td><td colspan="1" rowspan="1" class="confluenceTd"> ${ [ user.name, user.email, user.phone ] } </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> Map </td><td colspan="1" rowspan="1" class="confluenceTd"> <em>not available</em> </td><td colspan="1" rowspan="1" class="confluenceTd"> ${ { 'id':'4039','type':'hourly' } } </td></tr></tbody></table>
+<table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><th colspan="1" rowspan="1" class="confluenceTh"> JSF Syntax </th><th colspan="1" rowspan="1" class="confluenceTh"> Tapestry Syntax </th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> Property (calls getEmployeeName() or setEmployeeName()) </td><td colspan="1" rowspan="1" class="confluenceTd"> #{employeeBean.employeeName} </td><td colspan="1" rowspan="1" class="confluenceTd"> ${employeeName} </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> Boolean property (calls isHourly() or setHourly()) </td><td colspan="1" rowspan="1" class="confluenceTd"> #{employeeBean.hourly} </td><td colspan="1" rowspan="1" class="confluenceTd"> ${hourly} </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> Property chain </td><td colspan="1" rowspan="1" class="confluenceTd"> #{employeeBean.address.street} </td><td colspan="1" rowspan="1" class="confluenceTd"> ${address.
 street} </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> Null-safe property chain </td><td colspan="1" rowspan="1" class="confluenceTd"> #{employeeBean.address.street} </td><td colspan="1" rowspan="1" class="confluenceTd"> ${address?.street} </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> 5th element in a List </td><td colspan="1" rowspan="1" class="confluenceTd"> #{employeeBean.employees[5].name} </td><td colspan="1" rowspan="1" class="confluenceTd"> ${employees.get(5).name} </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> Negation </td><td colspan="1" rowspan="1" class="confluenceTd"> #{! employeeBean.hourly} </td><td colspan="1" rowspan="1" class="confluenceTd"> ${! hourly} </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> Arithmetic &amp; relational operators </td><td colspan="1" rowspan="1" class="confluenceTd"> +-*/% div mod </td><td colspan="1" rowspan="1" class="confluenceTd"> <em>not available</em> </td></tr><tr><t
 d colspan="1" rowspan="1" class="confluenceTd"> Relational operators </td><td colspan="1" rowspan="1" class="confluenceTd"> == != ne &lt; lt &gt; gt &lt;= le &gt;= ge </td><td colspan="1" rowspan="1" class="confluenceTd"> <em>not available</em> </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> Ternary operator </td><td colspan="1" rowspan="1" class="confluenceTd"> #{myBean.foo &lt; 0 ? 'bar' : 'baz'} </td><td colspan="1" rowspan="1" class="confluenceTd"> <em>not available</em> </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> Method calling </td><td colspan="1" rowspan="1" class="confluenceTd"> #{myBean.employees.size()} </td><td colspan="1" rowspan="1" class="confluenceTd"> ${employees.size()} </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> Iterated Range </td><td colspan="1" rowspan="1" class="confluenceTd"> <em>not avaialble</em> </td><td colspan="1" rowspan="1" class="confluenceTd"> ${1..10} </td></tr><tr><td colspan="1" rowspan="1" cl
 ass="confluenceTd"> Iterated Range (calculated) </td><td colspan="1" rowspan="1" class="confluenceTd"> <em>not avaialble</em> </td><td colspan="1" rowspan="1" class="confluenceTd"> ${1..groupList.size()} </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> List </td><td colspan="1" rowspan="1" class="confluenceTd"> <em>not available</em> </td><td colspan="1" rowspan="1" class="confluenceTd"> ${ [ user.name, user.email, user.phone ] } </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> Map </td><td colspan="1" rowspan="1" class="confluenceTd"> <em>not available</em> </td><td colspan="1" rowspan="1" class="confluenceTd"> ${ { 'id':'4039','type':'hourly' } } </td></tr></tbody></table>
 </div>
 
 
@@ -179,7 +179,7 @@ public class HelloWorld {
 
 <h3><a shape="rect" name="TapestryforJSFUsers-Eventhandling"></a>Event handling</h3>
 
-<p>In JSF, you specify the event via the <tt>action</tt> parameter (for example, &lt;h:commandButton value="Submit" action="employeeBean.saveChanges"&gt;). For Tapestry, event handler methods are found by method naming conventions (onSomeEvent() or by method annotations (@Event), based on a combination of the "t:id" attribute and event name, and the action name used depends on the component. For example, the "&lt;actionlink&gt;" component in Tapestry emits an "action" event when clicked, and you handle that event in your "onAction()" method.</p>
+<p>In JSF, you specify the event via the <tt>action</tt> parameter (for example, &lt;h:commandButton value="Submit" action="employeeBean.saveChanges"&gt;). For Tapestry, event handler methods are found by method naming conventions (onSomeEvent() or by method annotations (@Event), based on a combination of the "t:id" attribute and event name, and the action name used depends on the component. For example, the "&lt;t:actionlink&gt;" component in Tapestry emits an "action" event when clicked, and you handle that event in your "onAction()" method.</p>
 
 <h2><a shape="rect" name="TapestryforJSFUsers-Validation"></a>Validation</h2>
 
@@ -200,7 +200,7 @@ public class Employee {
 
 <p>By contrast, Tapestry implements this Post-Redirect-Get pattern by default. The URL will always reflect the page you're seeing, not the page you just came from.</p>
 
-<p>Note that by default Tapestry does not save property values across the Post-Redirect-Get cycle. This means that you have to consider how (and whether) to persist property values from one page to the next.  The usual solution is to either make the values part of the page's <a shape="rect" href="navigation.html#Navigation-PageActivation">Activation Context</a> or <a shape="rect" href="persistent-page-data.html" title="Persistent Page Data">@Persist the properties</a> in the session.</p>
+<p>Note that by default Tapestry does not save property values across the Post-Redirect-Get cycle. This means that you have to consider how (and whether) to persist property values from one page to the next.  The usual solution is to either make the values part of the page's <a shape="rect" href="navigation.html#Navigation-PageActivation">Activation Context</a> (which means the values will be appended to the URL) or <a shape="rect" href="persistent-page-data.html" title="Persistent Page Data">@Persist the properties</a> the values in the session.</p>
 
 <h2><a shape="rect" name="TapestryforJSFUsers-CustomandCompositeComponents"></a>Custom and Composite Components</h2>