You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by ad...@apache.org on 2014/04/24 21:41:18 UTC

svn commit: r1589849 [2/6] - in /wicket/common/site/trunk/_site/guide/guide: ./ pages/ src/docs/guide/ src/docs/guide/forms2/ src/docs/guide/helloWorld/ src/docs/img/

Modified: wicket/common/site/trunk/_site/guide/guide/pages/bestpractices_5.html
URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/_site/guide/guide/pages/bestpractices_5.html?rev=1589849&r1=1589848&r2=1589849&view=diff
==============================================================================
--- wicket/common/site/trunk/_site/guide/guide/pages/bestpractices_5.html (original)
+++ wicket/common/site/trunk/_site/guide/guide/pages/bestpractices_5.html Thu Apr 24 19:41:13 2014
@@ -205,7 +205,7 @@ add(loginBox);</pre></div><p class="para
 <div id="footer">
     
 Copyright &copy; 2013-2014 — <a href="http://www.apache.org/" target="_blank">The Apache Software Foundation</a> 
-                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-10)</b>
+                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-24)</b>
 
     
 </div>

Modified: wicket/common/site/trunk/_site/guide/guide/pages/bestpractices_6.html
URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/_site/guide/guide/pages/bestpractices_6.html?rev=1589849&r1=1589848&r2=1589849&view=diff
==============================================================================
--- wicket/common/site/trunk/_site/guide/guide/pages/bestpractices_6.html (original)
+++ wicket/common/site/trunk/_site/guide/guide/pages/bestpractices_6.html Thu Apr 24 19:41:13 2014
@@ -194,7 +194,7 @@ function addJsClass() {
 <div id="footer">
     
 Copyright &copy; 2013-2014 — <a href="http://www.apache.org/" target="_blank">The Apache Software Foundation</a> 
-                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-10)</b>
+                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-24)</b>
 
     
 </div>

Modified: wicket/common/site/trunk/_site/guide/guide/pages/bestpractices_7.html
URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/_site/guide/guide/pages/bestpractices_7.html?rev=1589849&r1=1589848&r2=1589849&view=diff
==============================================================================
--- wicket/common/site/trunk/_site/guide/guide/pages/bestpractices_7.html (original)
+++ wicket/common/site/trunk/_site/guide/guide/pages/bestpractices_7.html Thu Apr 24 19:41:13 2014
@@ -195,7 +195,7 @@ function addJsClass() {
 <div id="footer">
     
 Copyright &copy; 2013-2014 — <a href="http://www.apache.org/" target="_blank">The Apache Software Foundation</a> 
-                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-10)</b>
+                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-24)</b>
 
     
 </div>

Modified: wicket/common/site/trunk/_site/guide/guide/pages/bestpractices_8.html
URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/_site/guide/guide/pages/bestpractices_8.html?rev=1589849&r1=1589848&r2=1589849&view=diff
==============================================================================
--- wicket/common/site/trunk/_site/guide/guide/pages/bestpractices_8.html (original)
+++ wicket/common/site/trunk/_site/guide/guide/pages/bestpractices_8.html Thu Apr 24 19:41:13 2014
@@ -194,7 +194,7 @@ function addJsClass() {
 <div id="footer">
     
 Copyright &copy; 2013-2014 — <a href="http://www.apache.org/" target="_blank">The Apache Software Foundation</a> 
-                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-10)</b>
+                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-24)</b>
 
     
 </div>

Modified: wicket/common/site/trunk/_site/guide/guide/pages/bestpractices_9.html
URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/_site/guide/guide/pages/bestpractices_9.html?rev=1589849&r1=1589848&r2=1589849&view=diff
==============================================================================
--- wicket/common/site/trunk/_site/guide/guide/pages/bestpractices_9.html (original)
+++ wicket/common/site/trunk/_site/guide/guide/pages/bestpractices_9.html Thu Apr 24 19:41:13 2014
@@ -189,7 +189,7 @@ function addJsClass() {
 <div id="footer">
     
 Copyright &copy; 2013-2014 — <a href="http://www.apache.org/" target="_blank">The Apache Software Foundation</a> 
-                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-10)</b>
+                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-24)</b>
 
     
 </div>

Modified: wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_1.html
URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_1.html?rev=1589849&r1=1589848&r2=1589849&view=diff
==============================================================================
--- wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_1.html (original)
+++ wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_1.html Thu Apr 24 19:41:13 2014
@@ -197,7 +197,7 @@ However this description introduces some
 <div id="footer">
     
 Copyright &copy; 2013-2014 — <a href="http://www.apache.org/" target="_blank">The Apache Software Foundation</a> 
-                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-10)</b>
+                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-24)</b>
 
     
 </div>

Modified: wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_2.html
URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_2.html?rev=1589849&r1=1589848&r2=1589849&view=diff
==============================================================================
--- wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_2.html (original)
+++ wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_2.html Thu Apr 24 19:41:13 2014
@@ -190,7 +190,7 @@ In the following table these methods are
 <div id="footer">
     
 Copyright &copy; 2013-2014 — <a href="http://www.apache.org/" target="_blank">The Apache Software Foundation</a> 
-                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-10)</b>
+                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-24)</b>
 
     
 </div>

Modified: wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_3.html
URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_3.html?rev=1589849&r1=1589848&r2=1589849&view=diff
==============================================================================
--- wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_3.html (original)
+++ wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_3.html Thu Apr 24 19:41:13 2014
@@ -189,7 +189,7 @@ function addJsClass() {
 <div id="footer">
     
 Copyright &copy; 2013-2014 — <a href="http://www.apache.org/" target="_blank">The Apache Software Foundation</a> 
-                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-10)</b>
+                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-24)</b>
 
     
 </div>

Modified: wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_4.html
URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_4.html?rev=1589849&r1=1589848&r2=1589849&view=diff
==============================================================================
--- wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_4.html (original)
+++ wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_4.html Thu Apr 24 19:41:13 2014
@@ -243,7 +243,7 @@ If we forget to call superclass version 
 <div id="footer">
     
 Copyright &copy; 2013-2014 — <a href="http://www.apache.org/" target="_blank">The Apache Software Foundation</a> 
-                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-10)</b>
+                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-24)</b>
 
     
 </div>

Modified: wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_5.html
URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_5.html?rev=1589849&r1=1589848&r2=1589849&view=diff
==============================================================================
--- wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_5.html (original)
+++ wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_5.html Thu Apr 24 19:41:13 2014
@@ -189,7 +189,7 @@ function addJsClass() {
 <div id="footer">
     
 Copyright &copy; 2013-2014 — <a href="http://www.apache.org/" target="_blank">The Apache Software Foundation</a> 
-                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-10)</b>
+                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-24)</b>
 
     
 </div>

Modified: wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_6.html
URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_6.html?rev=1589849&r1=1589848&r2=1589849&view=diff
==============================================================================
--- wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_6.html (original)
+++ wicket/common/site/trunk/_site/guide/guide/pages/componentLifecycle_6.html Thu Apr 24 19:41:13 2014
@@ -190,7 +190,7 @@ function addJsClass() {
 <div id="footer">
     
 Copyright &copy; 2013-2014 — <a href="http://www.apache.org/" target="_blank">The Apache Software Foundation</a> 
-                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-10)</b>
+                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-24)</b>
 
     
 </div>

Modified: wicket/common/site/trunk/_site/guide/guide/pages/forms2_1.html
URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/_site/guide/guide/pages/forms2_1.html?rev=1589849&r1=1589848&r2=1589849&view=diff
==============================================================================
--- wicket/common/site/trunk/_site/guide/guide/pages/forms2_1.html (original)
+++ wicket/common/site/trunk/_site/guide/guide/pages/forms2_1.html Thu Apr 24 19:41:13 2014
@@ -196,7 +196,7 @@ Please note that the model of form compo
 <div id="footer">
     
 Copyright &copy; 2013-2014 — <a href="http://www.apache.org/" target="_blank">The Apache Software Foundation</a> 
-                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-10)</b>
+                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-24)</b>
 
     
 </div>

Modified: wicket/common/site/trunk/_site/guide/guide/pages/forms2_10.html
URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/_site/guide/guide/pages/forms2_10.html?rev=1589849&r1=1589848&r2=1589849&view=diff
==============================================================================
--- wicket/common/site/trunk/_site/guide/guide/pages/forms2_10.html (original)
+++ wicket/common/site/trunk/_site/guide/guide/pages/forms2_10.html Thu Apr 24 19:41:13 2014
@@ -2,7 +2,7 @@
                       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
 <head>
-    <title>12.10 Working with radio buttons and checkboxes 6.x</title>
+    <title>12.10 Stateless form 6.x</title>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
     <link rel="stylesheet" href="../css/main.css" type="text/css" media="screen, print" title="Style" charset="utf-8"/>
     <link rel="stylesheet" href="../css/pdf.css" type="text/css" media="print" title="PDF" charset="utf-8"/>
@@ -146,7 +146,7 @@ function addJsClass() {
 
 
                 <div class="project">
-                    <h1>12.10 Working with radio buttons and checkboxes - Reference Documentation</h1>
+                    <h1>12.10 Stateless form - Reference Documentation</h1>
 
                     <p><strong>Authors:</strong> Andrea Del Bene, Martin Grigorov, Carsten Hufe, Christian Kroemer, Daniel Bartl, Paul Borș</p>
 
@@ -159,74 +159,49 @@ function addJsClass() {
 
                 
 
-<h2 id="forms2_10">12.10 Working with radio buttons and checkboxes</h2>
-<p class="paragraph"/>In this paragraph we will see which components can be used to handle HTML radio buttons and checkboxes. Both these input elements are usually grouped together to display a list of possible choices:<p class="paragraph"/><img border="0" class="center" src="../img/choice-form-screenshot.png"></img><p class="paragraph"/>A check box can be used as single component to set a boolean property. For this purpose Wicket provides the <code>org.apache.wicket.markup.html.form.CheckBox</code> component which must be attached to &#60;input type="checkbox".../&#62; tag. In the next example (project SingleCheckBox) we will consider a form similar to the one used in paragraph 9.5 to edit a Person object, but with an additional checkbox to let the user decide if she wants to subscribe to our mailing list or not. The form uses the following bean as backing object:<p class="paragraph"/><div class="code"><pre><span class="java&#45;keyword">public</span> class RegistrationInfo <span c
 lass="java&#45;keyword">implements</span> Serializable &#123;<p class="paragraph"/>	<span class="java&#45;keyword">private</span> <span class="java&#45;object">String</span> name;
-	<span class="java&#45;keyword">private</span> <span class="java&#45;object">String</span> surname;
-	<span class="java&#45;keyword">private</span> <span class="java&#45;object">String</span> address;
-	<span class="java&#45;keyword">private</span> <span class="java&#45;object">String</span> email;
-	<span class="java&#45;keyword">private</span> <span class="java&#45;object">boolean</span> subscribeList;<p class="paragraph"/>	/&#42;Getters and setters&#42;/
-&#125;</pre></div><p class="paragraph"/>The markup and the code for this example are the following:<p class="paragraph"/><strong class="bold">HTML:</strong><p class="paragraph"/><div class="code"><pre>&#60;form wicket:id=<span class="java&#45;quote">"form"</span>&#62;		
-		&#60;div style=<span class="java&#45;quote">"display: table;"</span>&#62;
-			&#60;div style=<span class="java&#45;quote">"display: table&#45;row;"</span>&#62;
-				&#60;div style=<span class="java&#45;quote">"display: table&#45;cell;"</span>&#62;Name: &#60;/div&#62;
-				&#60;div style=<span class="java&#45;quote">"display: table&#45;cell;"</span>&#62;
-					&#60;input type=<span class="java&#45;quote">"text"</span> wicket:id=<span class="java&#45;quote">"name"</span>/&#62; 
-				&#60;/div&#62;	
-			&#60;/div&#62;
-			&#60;div style=<span class="java&#45;quote">"display: table&#45;row;"</span>&#62;
-				&#60;div style=<span class="java&#45;quote">"display: table&#45;cell;"</span>&#62;Surname: &#60;/div&#62;
-				&#60;div style=<span class="java&#45;quote">"display: table&#45;cell;"</span>&#62;
-					&#60;input type=<span class="java&#45;quote">"text"</span> wicket:id=<span class="java&#45;quote">"surname"</span>/&#62;
-				&#60;/div&#62;	
-			&#60;/div&#62;
-			&#60;div style=<span class="java&#45;quote">"display: table&#45;row;"</span>&#62;
-				&#60;div style=<span class="java&#45;quote">"display: table&#45;cell;"</span>&#62;Address: &#60;/div&#62;
-				&#60;div style=<span class="java&#45;quote">"display: table&#45;cell;"</span>&#62;
-					&#60;input type=<span class="java&#45;quote">"text"</span> wicket:id=<span class="java&#45;quote">"address"</span>/&#62;
-				&#60;/div&#62;	
-			&#60;/div&#62;
-			&#60;div style=<span class="java&#45;quote">"display: table&#45;row;"</span>&#62;
-				&#60;div style=<span class="java&#45;quote">"display: table&#45;cell;"</span>&#62;Email: &#60;/div&#62;
-				&#60;div style=<span class="java&#45;quote">"display: table&#45;cell;"</span>&#62;
-					&#60;input type=<span class="java&#45;quote">"text"</span> wicket:id=<span class="java&#45;quote">"email"</span>/&#62;
-				&#60;/div&#62;
-			&#60;/div&#62;
-			&#60;div style=<span class="java&#45;quote">"display: table&#45;row;"</span>&#62;
-				&#60;div style=<span class="java&#45;quote">"display: table&#45;cell;"</span>&#62;Subscribe list:&#60;/div&#62;
-				&#60;div style=<span class="java&#45;quote">"display: table&#45;cell;"</span>&#62;
-					&#60;input type=<span class="java&#45;quote">"checkbox"</span> wicket:id=<span class="java&#45;quote">"subscribeList"</span>/&#62;
-				&#60;/div&#62;
-			&#60;/div&#62;
-		&#60;/div&#62;	
-	&#60;input type=<span class="java&#45;quote">"submit"</span> value=<span class="java&#45;quote">"Save"</span>/&#62;
-&#60;/form&#62;</pre></div><p class="paragraph"/><strong class="bold">Java code:</strong><p class="paragraph"/><div class="code"><pre><span class="java&#45;keyword">public</span> HomePage(<span class="java&#45;keyword">final</span> PageParameters parameters) &#123;
-    	RegistrationInfo registrtionInfo = <span class="java&#45;keyword">new</span> RegistrationInfo();
-    	registrtionInfo.setSubscribeList(<span class="java&#45;keyword">true</span>);<p class="paragraph"/>    	Form form = <span class="java&#45;keyword">new</span> Form(<span class="java&#45;quote">"form"</span>, 
-    			<span class="java&#45;keyword">new</span> CompoundPropertyModel&#60;RegistrationInfo&#62;(registrtionInfo));<p class="paragraph"/>    	form.add(<span class="java&#45;keyword">new</span> TextField(<span class="java&#45;quote">"name"</span>));
-	form.add(<span class="java&#45;keyword">new</span> TextField(<span class="java&#45;quote">"surname"</span>));
-	form.add(<span class="java&#45;keyword">new</span> TextField(<span class="java&#45;quote">"address"</span>));
-	form.add(<span class="java&#45;keyword">new</span> TextField(<span class="java&#45;quote">"email"</span>));
-	form.add(<span class="java&#45;keyword">new</span> CheckBox(<span class="java&#45;quote">"subscribeList"</span>));<p class="paragraph"/>	add(form);
-&#125;</pre></div><p class="paragraph"/>Please note that the checkbox will be initially selected because we have set to true the subscribe flag during the model object creation (with instruction registrtionInfo.setSubscribeList(true)):<p class="paragraph"/><img border="0" class="center" src="../img/subscribe-checkbox-set.png"></img><p class="paragraph"/><h3>Working with grouped checkboxes</h3><p class="paragraph"/>When we need to display a given number of options with checkboxes, we can use the <code>org.apache.wicket.markup.html.form.CheckBoxMultipleChoice</code> component. For example, If our options are a list of strings, we can display them in this way:<p class="paragraph"/><strong class="bold">HTML:</strong><p class="paragraph"/><div class="code"><pre>&#60;div wicket:id=<span class="java&#45;quote">"checkGroup"</span>&#62;
-		&#60;input type=<span class="java&#45;quote">"checkbox"</span>/&#62;It will be replaced by the actual checkboxes&#8230;
-&#60;/div&#62;</pre></div><p class="paragraph"/><strong class="bold">Java code:</strong><p class="paragraph"/><div class="code"><pre>List&#60;<span class="java&#45;object">String</span>&#62; fruits = Arrays.asList(<span class="java&#45;quote">"apple"</span>, <span class="java&#45;quote">"strawberry"</span>, <span class="java&#45;quote">"watermelon"</span>); 
-form.add(<span class="java&#45;keyword">new</span> CheckBoxMultipleChoice(<span class="java&#45;quote">"checkGroup"</span>, <span class="java&#45;keyword">new</span> ListModel&#60;<span class="java&#45;object">String</span>&#62;(<span class="java&#45;keyword">new</span>  
-								 ArrayList&#60;<span class="java&#45;object">String</span>&#62;()), fruits));</pre></div><p class="paragraph"/><strong class="bold">Screenshot:</strong><p class="paragraph"/><img border="0" class="center" src="../img/grouped-checkbox.png"></img><p class="paragraph"/>This component can be attached to a &#60;div&#62; tag or to a &#60;span&#62; tag. No specific content is required for this tag as it will be populated with the actual checkboxes. Since this component allows multiple selection, its model object is a list. In the example above we have used model class <code>org.apache.wicket.model.util.ListModel</code> which is specifically designed to wrap a List object.<p class="paragraph"/>By default CheckBoxMultipleChoice inserts a &#60;br/&#62; tag as suffix after each option. We can configure both the suffix and the prefix used by the component with the setPrefix and setSuffix methods.<p class="paragraph"/>When our options are more complex objects than simple strings, we can 
 render them using an IChoiceRender, as we did for DropDownChoice in paragraph 9.4:<p class="paragraph"/><strong class="bold">HTML:</strong><p class="paragraph"/><div class="code"><pre>&#60;div wicket:id=<span class="java&#45;quote">"checkGroup"</span>&#62;
-		&#60;input type=<span class="java&#45;quote">"checkbox"</span>/&#62;It will be replaced by actual checkboxes&#8230;
-&#60;/div&#62;</pre></div><p class="paragraph"/><strong class="bold">Java code:</strong><p class="paragraph"/><div class="code"><pre>Person john = <span class="java&#45;keyword">new</span> Person(<span class="java&#45;quote">"John"</span>, <span class="java&#45;quote">"Smith"</span>);
-Person bob = <span class="java&#45;keyword">new</span> Person(<span class="java&#45;quote">"Bob"</span>, <span class="java&#45;quote">"Smith"</span>);
-Person jill = <span class="java&#45;keyword">new</span> Person(<span class="java&#45;quote">"Jill"</span>, <span class="java&#45;quote">"Smith"</span>);
-List&#60;Person&#62; theSmiths = Arrays.asList(john, bob, jill); 
-ChoiceRenderer render = <span class="java&#45;keyword">new</span> ChoiceRenderer(<span class="java&#45;quote">"name"</span>);
-     	form.add(<span class="java&#45;keyword">new</span> CheckBoxMultipleChoice(<span class="java&#45;quote">"checkGroup"</span>, <span class="java&#45;keyword">new</span> ListModel&#60;<span class="java&#45;object">String</span>&#62;(<span class="java&#45;keyword">new</span> ArrayList&#60;<span class="java&#45;object">String</span>&#62;()),   
-                                    theSmiths, render));</pre></div><p class="paragraph"/><strong class="bold">Screenshot:</strong><p class="paragraph"/><img border="0" class="center" src="../img/grouped-checkbox2.png"></img><p class="paragraph"/><h3>How to implement a "Select all" checkbox</h3><p class="paragraph"/>A nice feature we can offer to users when we have a group of checkboxes is a “special” checkbox which selects/unselects all the other options of the group:<p class="paragraph"/><img border="0" class="center" src="../img/select-all-checkbox.png"></img><p class="paragraph"/>Wicket comes with a couple of utility components that make it easy to implement such a feature. They are CheckboxMultipleChoiceSelector and CheckBoxSelector classes, both inside package <code>org.apache.wicket.markup.html.form</code>. The difference between these two components is that the first works with an instance of CheckBoxMultipleChoice while the second takes in input a list of CheckBox
  objects:<p class="paragraph"/><div class="code"><pre>/&#42; CheckboxMultipleChoiceSelector usage: &#42;/<p class="paragraph"/>CheckBoxMultipleChoice checkGroup;
-//checkGroup initialization&#8230;
-CheckboxMultipleChoiceSelector cbmcs = <span class="java&#45;keyword">new</span> CheckboxMultipleChoiceSelector(<span class="java&#45;quote">"id"</span>, checkGroup);<p class="paragraph"/>/&#42; CheckBoxSelector usage: &#42;/<p class="paragraph"/>CheckBox checkBox1, checkBox2, checkBox3;
-//checks initialization&#8230;
-CheckBoxSelector cbmcs = <span class="java&#45;keyword">new</span> CheckBoxSelector(<span class="java&#45;quote">"id"</span>, checkBox1, checkBox2, checkBox3);</pre></div><p class="paragraph"/><h3>Working with grouped radio buttons</h3><p class="paragraph"/>For groups of radio buttons we can use the <code>org.apache.wicket.markup.html.form.RadioChoice</code> component which works in much the same way as CheckBoxMultipleChoice:<p class="paragraph"/><strong class="bold">HTML:</strong><p class="paragraph"/><div class="code"><pre>&#60;div wicket:id=<span class="java&#45;quote">"radioGroup"</span>&#62;
-	&#60;input type=<span class="java&#45;quote">"radio"</span>/&#62;It will be replaced by actual radio buttons&#8230;
-&#60;/div&#62;</pre></div><p class="paragraph"/><strong class="bold">Java code:</strong><p class="paragraph"/><div class="code"><pre>List&#60;<span class="java&#45;object">String</span>&#62; fruits = Arrays.asList(<span class="java&#45;quote">"apple"</span>, <span class="java&#45;quote">"strawberry"</span>, <span class="java&#45;quote">"watermelon"</span>); 
-form.add(<span class="java&#45;keyword">new</span> RadioChoice(<span class="java&#45;quote">"radioGroup"</span>, Model.of(<span class="java&#45;quote">""</span>), fruits));</pre></div><p class="paragraph"/><strong class="bold">Screenshot:</strong><p class="paragraph"/><img border="0" class="center" src="../img/grouped-radiobutton.png"></img><p class="paragraph"/>Just like CheckBoxMultipleChoice, this component provides the setPrefix and setSuffix methods to configure the prefix and suffix for our options and it supports IChoiceRender as well. In addition, RadioChoice provides the wantOnSelectionChangedNotifications() method to notify the web server when the selected option changes (this is the same method seen for DropDownChoice in paragraph 9.4).
+<h2 id="forms2_10">12.10 Stateless form</h2>
+<p class="paragraph"/>In chapter 6 we have seen how Wicket pages can be divided into two categories: stateful and stateless. Pages that are stateless don't need to be stored in the user session and they should be used  when we don't need to save any user data in the user session (for example in the public area of a site).<p class="paragraph"/>Besides saving resources on server-side, stateless pages can be adopted to improve user experience and to avoid security weaknesses. A typical situation where a stateless page can bring these benefits is when we have to implement a login page.<p class="paragraph"/>For this kind of page we might encounter two potential problems if we chose to use a stateful page. The first problem occurs when the user tries to login without a valid session assigned to him. This could happen if the user leaves the login page opened for a period of time bigger than the session's timeout and then he decides to log in. Under these conditions the user will be redirec
 ted to a 'Page expired' error page, which is not exactly a nice thing for user experience.<p class="paragraph"/>The second problem occurs when a malicious user or a web crawler program attempts to login into our web application, generating a huge number of page versions and consequently increasing the size of the user session.<p class="paragraph"/>To avoid these kinds of problems we should build a stateless login page which does not depend on a user session. Wicket provides a special version of the Form component called StatelessForm which is stateless by default (i.e its method getStatelessHint() returns true), hence it's an ideal solution when we want to build a stateless page with a form. A possible implementation of our login form is the following (example project StatelessLoginForm):<p class="paragraph"/><strong class="bold">HTML:</strong><p class="paragraph"/><div class="code"><pre>&#60;html&#62;
+   &#60;head&#62;
+      &#60;meta charset=<span class="java&#45;quote">"utf&#45;8"</span> /&#62;
+   &#60;/head&#62;
+   &#60;body&#62;
+      &#60;div&#62;Session is &#60;b wicket:id=<span class="java&#45;quote">"sessionType"</span>&#62;&#60;/b&#62;&#60;/div&#62;
+      &#60;br/&#62;
+      &#60;div&#62;Type 'user' as correct credentials&#60;/div&#62;
+      &#60;form wicket:id=<span class="java&#45;quote">"form"</span>&#62;
+         &#60;fieldset&#62;
+            Username: &#60;input type=<span class="java&#45;quote">"text"</span> wicket:id=<span class="java&#45;quote">"username"</span>/&#62; &#60;br/&#62;
+            Password: &#60;input type=<span class="java&#45;quote">"password"</span> wicket:id=<span class="java&#45;quote">"password"</span>/&#62;&#60;br/&#62;
+            &#60;input type=<span class="java&#45;quote">"submit"</span>/&#62;
+         &#60;/fieldset&#62;
+      &#60;/form&#62;
+      &#60;br/&#62;
+      &#60;div wicket:id=<span class="java&#45;quote">"feedbackPanel"</span>&#62;&#60;/div&#62;
+   &#60;/body&#62;
+&#60;/html&#62;</pre></div><p class="paragraph"/><strong class="bold">Java code:</strong><p class="paragraph"/><div class="code"><pre><span class="java&#45;keyword">public</span> class HomePage <span class="java&#45;keyword">extends</span> WebPage &#123;
+    <span class="java&#45;keyword">private</span> Label sessionType;
+    <span class="java&#45;keyword">private</span> <span class="java&#45;object">String</span> password;
+    <span class="java&#45;keyword">private</span> <span class="java&#45;object">String</span> username;<p class="paragraph"/>    <span class="java&#45;keyword">public</span> HomePage(<span class="java&#45;keyword">final</span> PageParameters parameters) &#123;
+       StatelessForm form = <span class="java&#45;keyword">new</span> StatelessForm(<span class="java&#45;quote">"form"</span>)&#123;
+         @Override
+         <span class="java&#45;keyword">protected</span> void onSubmit() &#123;
+            //sign in <span class="java&#45;keyword">if</span> username and password are “user”
+            <span class="java&#45;keyword">if</span>(<span class="java&#45;quote">"user"</span>.equals(username) &#38;&#38; username.equals(password))
+               info(<span class="java&#45;quote">"Username and password are correct!"</span>);
+            <span class="java&#45;keyword">else</span>
+               error(<span class="java&#45;quote">"Wrong username or password"</span>);
+         &#125;
+      &#125;;<p class="paragraph"/>      form.add(<span class="java&#45;keyword">new</span> PasswordTextField(<span class="java&#45;quote">"password"</span>));
+      form.add(<span class="java&#45;keyword">new</span> TextField(<span class="java&#45;quote">"username"</span>));<p class="paragraph"/>      add(form.setDefaultModel(<span class="java&#45;keyword">new</span> CompoundPropertyModel(<span class="java&#45;keyword">this</span>)));<p class="paragraph"/>      add(sessionType = <span class="java&#45;keyword">new</span> Label(<span class="java&#45;quote">"sessionType"</span>, Model.of(<span class="java&#45;quote">""</span>)));
+      add(<span class="java&#45;keyword">new</span> FeedbackPanel(<span class="java&#45;quote">"feedbackPanel"</span>));
+    &#125;<p class="paragraph"/>    @Override
+    <span class="java&#45;keyword">protected</span> void onBeforeRender() &#123;
+       <span class="java&#45;keyword">super</span>.onBeforeRender();<p class="paragraph"/>       <span class="java&#45;keyword">if</span>(getSession().isTemporary())
+          sessionType.setDefaultModelObject(<span class="java&#45;quote">"temporary"</span>);
+       <span class="java&#45;keyword">else</span>
+          sessionType.setDefaultModelObject(<span class="java&#45;quote">"permanent"</span>);
+    &#125;
+&#125;</pre></div><p class="paragraph"/>Label sessionType shows if current session is temporary or not and is set inside onBeforeRender(): if our page is really stateless the session will be always temporary. We have also inserted a feedback panel in the home page that shows if the credentials are correct. This was done to make the example form more interactive.
 
 
                 <div style="clear:both;margin-top:15px;"></div>
@@ -255,7 +230,7 @@ form.add(<span class="java&#45;keyword">
 <div id="footer">
     
 Copyright &copy; 2013-2014 — <a href="http://www.apache.org/" target="_blank">The Apache Software Foundation</a> 
-                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-10)</b>
+                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-24)</b>
 
     
 </div>

Modified: wicket/common/site/trunk/_site/guide/guide/pages/forms2_11.html
URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/_site/guide/guide/pages/forms2_11.html?rev=1589849&r1=1589848&r2=1589849&view=diff
==============================================================================
--- wicket/common/site/trunk/_site/guide/guide/pages/forms2_11.html (original)
+++ wicket/common/site/trunk/_site/guide/guide/pages/forms2_11.html Thu Apr 24 19:41:13 2014
@@ -2,7 +2,7 @@
                       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
 <head>
-    <title>12.11 Selecting multiple values with ListMultipleChoices and Palette 6.x</title>
+    <title>12.11 Working with radio buttons and checkboxes 6.x</title>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
     <link rel="stylesheet" href="../css/main.css" type="text/css" media="screen, print" title="Style" charset="utf-8"/>
     <link rel="stylesheet" href="../css/pdf.css" type="text/css" media="print" title="PDF" charset="utf-8"/>
@@ -146,7 +146,7 @@ function addJsClass() {
 
 
                 <div class="project">
-                    <h1>12.11 Selecting multiple values with ListMultipleChoices and Palette - Reference Documentation</h1>
+                    <h1>12.11 Working with radio buttons and checkboxes - Reference Documentation</h1>
 
                     <p><strong>Authors:</strong> Andrea Del Bene, Martin Grigorov, Carsten Hufe, Christian Kroemer, Daniel Bartl, Paul Borș</p>
 
@@ -159,47 +159,74 @@ function addJsClass() {
 
                 
 
-<h2 id="forms2_11">12.11 Selecting multiple values with ListMultipleChoices and Palette</h2>
-<p class="paragraph"/>Checkboxes work well when we have a small amount of options to display, but they quickly become chaotic as the number of options increases. To overcome this limit we can use the &#60;select&#62; tag switching it to multiple-choice mode with attribute multiple="multiple":<p class="paragraph"/><img border="0" class="center" src="../img/list-multiple-choices.png"></img><p class="paragraph"/>Now the user can select multiple options by holding down Ctrl key (or Command key for Mac) and selecting them.<p class="paragraph"/>To work with multiple choice list Wicket provides the <code>org.apache.wicket.markup.html.form.ListMultipleChoice</code> component:<p class="paragraph"/><strong class="bold">HTML:</strong><p class="paragraph"/><div class="code"><pre>&#60;select wicket:id=<span class="java&#45;quote">"fruits"</span>&#62;
-	&#60;option&#62;choice 1&#60;/option&#62;
-	&#60;option&#62;choice 2&#60;/option&#62;
-&#60;/select&#62;</pre></div><p class="paragraph"/><strong class="bold">Java code:</strong><p class="paragraph"/><div class="code"><pre>List&#60;<span class="java&#45;object">String</span>&#62; fruits = Arrays.asList(<span class="java&#45;quote">"apple"</span>, <span class="java&#45;quote">"strawberry"</span>, <span class="java&#45;quote">"watermelon"</span>); 
-form.add(<span class="java&#45;keyword">new</span> ListMultipleChoice(<span class="java&#45;quote">"fruits"</span>, <span class="java&#45;keyword">new</span> ListModel&#60;<span class="java&#45;object">String</span>&#62;(<span class="java&#45;keyword">new</span> ArrayList&#60;<span class="java&#45;object">String</span>&#62;()), fruits));</pre></div><p class="paragraph"/><strong class="bold">Screenshot:</strong><p class="paragraph"/><img border="0" class="center" src="../img/list-multiple-choices2.png"></img><p class="paragraph"/>This component must be bound to a &#60;select&#62; tag but the attribute multiple="multiple" is not required as it will automatically be added by the component.<p class="paragraph"/>The number of visible rows can be set with the setMaxRows(int maxRows) method.<p class="paragraph"/><h3>Component Palette</h3><p class="paragraph"/>While multiple choice list solves the problem of handling a big number of multiple choices, it is not much intuitive for end users. 
 That's why desktop GUIs have introduced a more complex component which can be generally referred to as multi select transfer component (it doesn't have an actual official name):<p class="paragraph"/><img border="0" class="center" src="../img/multi-select-transfer-component.png"></img><p class="paragraph"/>This kind of component is composed by two multiple-choice lists, one on the left displaying the available options and the other one on the right displaying the selected options. User can move options from a list to another by double clicking on them or using the buttons placed between the two list.<p class="paragraph"/>Built-in <code>org.apache.wicket.extensions.markup.html.form.palette.Palette</code> component provides an out-of-the-box implementation of a multi select transfer component. It works in a similar way to ListMultipleChoice:<p class="paragraph"/><strong class="bold">HTML:</strong><p class="paragraph"/><div class="code"><pre>&#60;div wicket:id=<span class="java&#45;quot
 e">"palette"</span>&#62;
-   Select will be replaced by the actual content&#8230;
-	   &#60;select multiple=<span class="java&#45;quote">"multiple"</span>&#62;
-     &#60;option&#62;option1&#60;/option&#62;
-     &#60;option&#62;option2&#60;/option&#62;
-     &#60;option&#62;option3&#60;/option&#62;
+<h2 id="forms2_11">12.11 Working with radio buttons and checkboxes</h2>
+<p class="paragraph"/>In this paragraph we will see which components can be used to handle HTML radio buttons and checkboxes. Both these input elements are usually grouped together to display a list of possible choices:<p class="paragraph"/><img border="0" class="center" src="../img/choice-form-screenshot.png"></img><p class="paragraph"/>A check box can be used as single component to set a boolean property. For this purpose Wicket provides the <code>org.apache.wicket.markup.html.form.CheckBox</code> component which must be attached to &#60;input type="checkbox".../&#62; tag. In the next example (project SingleCheckBox) we will consider a form similar to the one used in paragraph 9.5 to edit a Person object, but with an additional checkbox to let the user decide if she wants to subscribe to our mailing list or not. The form uses the following bean as backing object:<p class="paragraph"/><div class="code"><pre><span class="java&#45;keyword">public</span> class RegistrationInfo <span c
 lass="java&#45;keyword">implements</span> Serializable &#123;<p class="paragraph"/>	<span class="java&#45;keyword">private</span> <span class="java&#45;object">String</span> name;
+	<span class="java&#45;keyword">private</span> <span class="java&#45;object">String</span> surname;
+	<span class="java&#45;keyword">private</span> <span class="java&#45;object">String</span> address;
+	<span class="java&#45;keyword">private</span> <span class="java&#45;object">String</span> email;
+	<span class="java&#45;keyword">private</span> <span class="java&#45;object">boolean</span> subscribeList;<p class="paragraph"/>	/&#42;Getters and setters&#42;/
+&#125;</pre></div><p class="paragraph"/>The markup and the code for this example are the following:<p class="paragraph"/><strong class="bold">HTML:</strong><p class="paragraph"/><div class="code"><pre>&#60;form wicket:id=<span class="java&#45;quote">"form"</span>&#62;		
+		&#60;div style=<span class="java&#45;quote">"display: table;"</span>&#62;
+			&#60;div style=<span class="java&#45;quote">"display: table&#45;row;"</span>&#62;
+				&#60;div style=<span class="java&#45;quote">"display: table&#45;cell;"</span>&#62;Name: &#60;/div&#62;
+				&#60;div style=<span class="java&#45;quote">"display: table&#45;cell;"</span>&#62;
+					&#60;input type=<span class="java&#45;quote">"text"</span> wicket:id=<span class="java&#45;quote">"name"</span>/&#62; 
+				&#60;/div&#62;	
+			&#60;/div&#62;
+			&#60;div style=<span class="java&#45;quote">"display: table&#45;row;"</span>&#62;
+				&#60;div style=<span class="java&#45;quote">"display: table&#45;cell;"</span>&#62;Surname: &#60;/div&#62;
+				&#60;div style=<span class="java&#45;quote">"display: table&#45;cell;"</span>&#62;
+					&#60;input type=<span class="java&#45;quote">"text"</span> wicket:id=<span class="java&#45;quote">"surname"</span>/&#62;
+				&#60;/div&#62;	
+			&#60;/div&#62;
+			&#60;div style=<span class="java&#45;quote">"display: table&#45;row;"</span>&#62;
+				&#60;div style=<span class="java&#45;quote">"display: table&#45;cell;"</span>&#62;Address: &#60;/div&#62;
+				&#60;div style=<span class="java&#45;quote">"display: table&#45;cell;"</span>&#62;
+					&#60;input type=<span class="java&#45;quote">"text"</span> wicket:id=<span class="java&#45;quote">"address"</span>/&#62;
+				&#60;/div&#62;	
+			&#60;/div&#62;
+			&#60;div style=<span class="java&#45;quote">"display: table&#45;row;"</span>&#62;
+				&#60;div style=<span class="java&#45;quote">"display: table&#45;cell;"</span>&#62;Email: &#60;/div&#62;
+				&#60;div style=<span class="java&#45;quote">"display: table&#45;cell;"</span>&#62;
+					&#60;input type=<span class="java&#45;quote">"text"</span> wicket:id=<span class="java&#45;quote">"email"</span>/&#62;
+				&#60;/div&#62;
+			&#60;/div&#62;
+			&#60;div style=<span class="java&#45;quote">"display: table&#45;row;"</span>&#62;
+				&#60;div style=<span class="java&#45;quote">"display: table&#45;cell;"</span>&#62;Subscribe list:&#60;/div&#62;
+				&#60;div style=<span class="java&#45;quote">"display: table&#45;cell;"</span>&#62;
+					&#60;input type=<span class="java&#45;quote">"checkbox"</span> wicket:id=<span class="java&#45;quote">"subscribeList"</span>/&#62;
+				&#60;/div&#62;
+			&#60;/div&#62;
+		&#60;/div&#62;	
+	&#60;input type=<span class="java&#45;quote">"submit"</span> value=<span class="java&#45;quote">"Save"</span>/&#62;
+&#60;/form&#62;</pre></div><p class="paragraph"/><strong class="bold">Java code:</strong><p class="paragraph"/><div class="code"><pre><span class="java&#45;keyword">public</span> HomePage(<span class="java&#45;keyword">final</span> PageParameters parameters) &#123;
+    	RegistrationInfo registrtionInfo = <span class="java&#45;keyword">new</span> RegistrationInfo();
+    	registrtionInfo.setSubscribeList(<span class="java&#45;keyword">true</span>);<p class="paragraph"/>    	Form form = <span class="java&#45;keyword">new</span> Form(<span class="java&#45;quote">"form"</span>, 
+    			<span class="java&#45;keyword">new</span> CompoundPropertyModel&#60;RegistrationInfo&#62;(registrtionInfo));<p class="paragraph"/>    	form.add(<span class="java&#45;keyword">new</span> TextField(<span class="java&#45;quote">"name"</span>));
+	form.add(<span class="java&#45;keyword">new</span> TextField(<span class="java&#45;quote">"surname"</span>));
+	form.add(<span class="java&#45;keyword">new</span> TextField(<span class="java&#45;quote">"address"</span>));
+	form.add(<span class="java&#45;keyword">new</span> TextField(<span class="java&#45;quote">"email"</span>));
+	form.add(<span class="java&#45;keyword">new</span> CheckBox(<span class="java&#45;quote">"subscribeList"</span>));<p class="paragraph"/>	add(form);
+&#125;</pre></div><p class="paragraph"/>Please note that the checkbox will be initially selected because we have set to true the subscribe flag during the model object creation (with instruction registrtionInfo.setSubscribeList(true)):<p class="paragraph"/><img border="0" class="center" src="../img/subscribe-checkbox-set.png"></img><p class="paragraph"/><h3>Working with grouped checkboxes</h3><p class="paragraph"/>When we need to display a given number of options with checkboxes, we can use the <code>org.apache.wicket.markup.html.form.CheckBoxMultipleChoice</code> component. For example, If our options are a list of strings, we can display them in this way:<p class="paragraph"/><strong class="bold">HTML:</strong><p class="paragraph"/><div class="code"><pre>&#60;div wicket:id=<span class="java&#45;quote">"checkGroup"</span>&#62;
+		&#60;input type=<span class="java&#45;quote">"checkbox"</span>/&#62;It will be replaced by the actual checkboxes&#8230;
+&#60;/div&#62;</pre></div><p class="paragraph"/><strong class="bold">Java code:</strong><p class="paragraph"/><div class="code"><pre>List&#60;<span class="java&#45;object">String</span>&#62; fruits = Arrays.asList(<span class="java&#45;quote">"apple"</span>, <span class="java&#45;quote">"strawberry"</span>, <span class="java&#45;quote">"watermelon"</span>); 
+form.add(<span class="java&#45;keyword">new</span> CheckBoxMultipleChoice(<span class="java&#45;quote">"checkGroup"</span>, <span class="java&#45;keyword">new</span> ListModel&#60;<span class="java&#45;object">String</span>&#62;(<span class="java&#45;keyword">new</span>  
+								 ArrayList&#60;<span class="java&#45;object">String</span>&#62;()), fruits));</pre></div><p class="paragraph"/><strong class="bold">Screenshot:</strong><p class="paragraph"/><img border="0" class="center" src="../img/grouped-checkbox.png"></img><p class="paragraph"/>This component can be attached to a &#60;div&#62; tag or to a &#60;span&#62; tag. No specific content is required for this tag as it will be populated with the actual checkboxes. Since this component allows multiple selection, its model object is a list. In the example above we have used model class <code>org.apache.wicket.model.util.ListModel</code> which is specifically designed to wrap a List object.<p class="paragraph"/>By default CheckBoxMultipleChoice inserts a &#60;br/&#62; tag as suffix after each option. We can configure both the suffix and the prefix used by the component with the setPrefix and setSuffix methods.<p class="paragraph"/>When our options are more complex objects than simple strings, we can 
 render them using an IChoiceRender, as we did for DropDownChoice in paragraph 9.4:<p class="paragraph"/><strong class="bold">HTML:</strong><p class="paragraph"/><div class="code"><pre>&#60;div wicket:id=<span class="java&#45;quote">"checkGroup"</span>&#62;
+		&#60;input type=<span class="java&#45;quote">"checkbox"</span>/&#62;It will be replaced by actual checkboxes&#8230;
 &#60;/div&#62;</pre></div><p class="paragraph"/><strong class="bold">Java code:</strong><p class="paragraph"/><div class="code"><pre>Person john = <span class="java&#45;keyword">new</span> Person(<span class="java&#45;quote">"John"</span>, <span class="java&#45;quote">"Smith"</span>);
 Person bob = <span class="java&#45;keyword">new</span> Person(<span class="java&#45;quote">"Bob"</span>, <span class="java&#45;quote">"Smith"</span>);
 Person jill = <span class="java&#45;keyword">new</span> Person(<span class="java&#45;quote">"Jill"</span>, <span class="java&#45;quote">"Smith"</span>);
-Person andrea = <span class="java&#45;keyword">new</span> Person(<span class="java&#45;quote">"Andrea"</span>, <span class="java&#45;quote">"Smith"</span>);<p class="paragraph"/>List&#60;Person&#62; theSmiths = Arrays.asList(john, bob, jill, andrea); 
-ChoiceRenderer render = <span class="java&#45;keyword">new</span> ChoiceRenderer(<span class="java&#45;quote">"name"</span>);<p class="paragraph"/>form.add(<span class="java&#45;keyword">new</span> Palette(<span class="java&#45;quote">"palette"</span>, Model.of(<span class="java&#45;keyword">new</span> ArrayList&#60;<span class="java&#45;object">String</span>&#62;()), <span class="java&#45;keyword">new</span> ListModel&#60;<span class="java&#45;object">String</span>&#62; (theSmiths), render, 5, <span class="java&#45;keyword">true</span>));</pre></div><p class="paragraph"/><strong class="bold">Screenshot:</strong><p class="paragraph"/><img border="0" class="center" src="../img/multi-select-transfer-component-wicket.png"></img><p class="paragraph"/>The last two parameters of the Palette's constructor (an integer value and a boolean value) are, respectively, the number of visible rows for the two lists and a flag to choose if we want to display the two optional buttons which move selec
 ted options up and down. The descriptions of the two lists (“Available” and “Selected”) can be customized providing two resources with keys palette.available and palette.selected.<p class="paragraph"/>The markup of this component uses a number of CSS classes which can be extended/overriden to customize the style of the component. We can find these classes and see which tags they decorate in the default markup file of the component:<p class="paragraph"/><div class="code"><pre>&#60;table cellspacing=<span class="java&#45;quote">"0"</span> cellpadding=<span class="java&#45;quote">"2"</span> class=<span class="java&#45;quote">"palette"</span>&#62;
-&#60;tr&#62;
-	&#60;td class=<span class="java&#45;quote">"header headerAvailable"</span>&#62;&#60;span wicket:id=<span class="java&#45;quote">"availableHeader"</span>&#62;&#91;available header&#93;&#60;/span&#62;&#60;/td&#62;
-	&#60;td&#62;&#38;&#35;160;&#60;/td&#62;
-	&#60;td class=<span class="java&#45;quote">"header headerSelected"</span>&#62;&#60;span wicket:id=<span class="java&#45;quote">"selectedHeader"</span>&#62;&#91;selected header&#93;&#60;/span&#62;                                           
-        &#60;/td&#62; 
-&#60;/tr&#62;
-&#60;tr&#62;
-	&#60;td class=<span class="java&#45;quote">"pane choices"</span>&#62;
-		&#60;select wicket:id=<span class="java&#45;quote">"choices"</span> class=<span class="java&#45;quote">"choicesSelect"</span>&#62;&#91;choices&#93;&#60;/select&#62;	
-	&#60;/td&#62;
-	&#60;td class=<span class="java&#45;quote">"buttons"</span>&#62;
-		&#60;button type=<span class="java&#45;quote">"button"</span> wicket:id=<span class="java&#45;quote">"addButton"</span> class=<span class="java&#45;quote">"button add"</span>&#62;&#60;div/&#62; 
-               &#60;/button&#62;&#60;br/&#62;
-		&#60;button type=<span class="java&#45;quote">"button"</span> wicket:id=<span class="java&#45;quote">"removeButton"</span> class=<span class="java&#45;quote">"button remove"</span>&#62;&#60;div/&#62; 
-               &#60;/button&#62;&#60;br/&#62;
-		&#60;button type=<span class="java&#45;quote">"button"</span> wicket:id=<span class="java&#45;quote">"moveUpButton"</span> class=<span class="java&#45;quote">"button up"</span>&#62;&#60;div/&#62;  
-               &#60;/button&#62;&#60;br/&#62;
-		&#60;button type=<span class="java&#45;quote">"button"</span> wicket:id=<span class="java&#45;quote">"moveDownButton"</span> class=<span class="java&#45;quote">"button down"</span>&#62;&#60;div/&#62;  
-               &#60;/button&#62;&#60;br/&#62;
-	&#60;/td&#62;
-	&#60;td class=<span class="java&#45;quote">"pane selection"</span>&#62;
-		&#60;select class=<span class="java&#45;quote">"selectionSelect"</span> wicket:id=<span class="java&#45;quote">"selection"</span>&#62;&#91;selection&#93;&#60;/select&#62;	
-	&#60;/td&#62;
-&#60;/tr&#62;
-&#60;/table&#62;</pre></div>
+List&#60;Person&#62; theSmiths = Arrays.asList(john, bob, jill); 
+ChoiceRenderer render = <span class="java&#45;keyword">new</span> ChoiceRenderer(<span class="java&#45;quote">"name"</span>);
+     	form.add(<span class="java&#45;keyword">new</span> CheckBoxMultipleChoice(<span class="java&#45;quote">"checkGroup"</span>, <span class="java&#45;keyword">new</span> ListModel&#60;<span class="java&#45;object">String</span>&#62;(<span class="java&#45;keyword">new</span> ArrayList&#60;<span class="java&#45;object">String</span>&#62;()),   
+                                    theSmiths, render));</pre></div><p class="paragraph"/><strong class="bold">Screenshot:</strong><p class="paragraph"/><img border="0" class="center" src="../img/grouped-checkbox2.png"></img><p class="paragraph"/><h3>How to implement a "Select all" checkbox</h3><p class="paragraph"/>A nice feature we can offer to users when we have a group of checkboxes is a “special” checkbox which selects/unselects all the other options of the group:<p class="paragraph"/><img border="0" class="center" src="../img/select-all-checkbox.png"></img><p class="paragraph"/>Wicket comes with a couple of utility components that make it easy to implement such a feature. They are CheckboxMultipleChoiceSelector and CheckBoxSelector classes, both inside package <code>org.apache.wicket.markup.html.form</code>. The difference between these two components is that the first works with an instance of CheckBoxMultipleChoice while the second takes in input a list of CheckBox
  objects:<p class="paragraph"/><div class="code"><pre>/&#42; CheckboxMultipleChoiceSelector usage: &#42;/<p class="paragraph"/>CheckBoxMultipleChoice checkGroup;
+//checkGroup initialization&#8230;
+CheckboxMultipleChoiceSelector cbmcs = <span class="java&#45;keyword">new</span> CheckboxMultipleChoiceSelector(<span class="java&#45;quote">"id"</span>, checkGroup);<p class="paragraph"/>/&#42; CheckBoxSelector usage: &#42;/<p class="paragraph"/>CheckBox checkBox1, checkBox2, checkBox3;
+//checks initialization&#8230;
+CheckBoxSelector cbmcs = <span class="java&#45;keyword">new</span> CheckBoxSelector(<span class="java&#45;quote">"id"</span>, checkBox1, checkBox2, checkBox3);</pre></div><p class="paragraph"/><h3>Working with grouped radio buttons</h3><p class="paragraph"/>For groups of radio buttons we can use the <code>org.apache.wicket.markup.html.form.RadioChoice</code> component which works in much the same way as CheckBoxMultipleChoice:<p class="paragraph"/><strong class="bold">HTML:</strong><p class="paragraph"/><div class="code"><pre>&#60;div wicket:id=<span class="java&#45;quote">"radioGroup"</span>&#62;
+	&#60;input type=<span class="java&#45;quote">"radio"</span>/&#62;It will be replaced by actual radio buttons&#8230;
+&#60;/div&#62;</pre></div><p class="paragraph"/><strong class="bold">Java code:</strong><p class="paragraph"/><div class="code"><pre>List&#60;<span class="java&#45;object">String</span>&#62; fruits = Arrays.asList(<span class="java&#45;quote">"apple"</span>, <span class="java&#45;quote">"strawberry"</span>, <span class="java&#45;quote">"watermelon"</span>); 
+form.add(<span class="java&#45;keyword">new</span> RadioChoice(<span class="java&#45;quote">"radioGroup"</span>, Model.of(<span class="java&#45;quote">""</span>), fruits));</pre></div><p class="paragraph"/><strong class="bold">Screenshot:</strong><p class="paragraph"/><img border="0" class="center" src="../img/grouped-radiobutton.png"></img><p class="paragraph"/>Just like CheckBoxMultipleChoice, this component provides the setPrefix and setSuffix methods to configure the prefix and suffix for our options and it supports IChoiceRender as well. In addition, RadioChoice provides the wantOnSelectionChangedNotifications() method to notify the web server when the selected option changes (this is the same method seen for DropDownChoice in paragraph 9.4).
 
 
                 <div style="clear:both;margin-top:15px;"></div>
@@ -228,7 +255,7 @@ ChoiceRenderer render = <span class="jav
 <div id="footer">
     
 Copyright &copy; 2013-2014 — <a href="http://www.apache.org/" target="_blank">The Apache Software Foundation</a> 
-                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-10)</b>
+                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-24)</b>
 
     
 </div>

Modified: wicket/common/site/trunk/_site/guide/guide/pages/forms2_12.html
URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/_site/guide/guide/pages/forms2_12.html?rev=1589849&r1=1589848&r2=1589849&view=diff
==============================================================================
--- wicket/common/site/trunk/_site/guide/guide/pages/forms2_12.html (original)
+++ wicket/common/site/trunk/_site/guide/guide/pages/forms2_12.html Thu Apr 24 19:41:13 2014
@@ -2,7 +2,7 @@
                       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
 <head>
-    <title>12.12 Summary 6.x</title>
+    <title>12.12 Selecting multiple values with ListMultipleChoices and Palette 6.x</title>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
     <link rel="stylesheet" href="../css/main.css" type="text/css" media="screen, print" title="Style" charset="utf-8"/>
     <link rel="stylesheet" href="../css/pdf.css" type="text/css" media="print" title="PDF" charset="utf-8"/>
@@ -146,7 +146,7 @@ function addJsClass() {
 
 
                 <div class="project">
-                    <h1>12.12 Summary - Reference Documentation</h1>
+                    <h1>12.12 Selecting multiple values with ListMultipleChoices and Palette - Reference Documentation</h1>
 
                     <p><strong>Authors:</strong> Andrea Del Bene, Martin Grigorov, Carsten Hufe, Christian Kroemer, Daniel Bartl, Paul Borș</p>
 
@@ -159,10 +159,47 @@ function addJsClass() {
 
                 
 
-<h2 id="forms2_12">12.12 Summary</h2>
-
-Forms are the standard solution to let users interact with our web applications. In this chapter we have seen the three steps involved with the form processing workflow in Wicket. We have started looking at form validation and feedback messages generation, then we have seen how Wicket converts input values into Java objects and vice versa.<p class="paragraph"/>In the second part of the chapter we learnt how to build reusable form components and how to  implement a stateless form. We have ended the chapter with an overview of the built-in form components needed to handle standard input form elements like checkboxes, radio buttons and multiple selections lists.<p class="paragraph"/>
-
+<h2 id="forms2_12">12.12 Selecting multiple values with ListMultipleChoices and Palette</h2>
+<p class="paragraph"/>Checkboxes work well when we have a small amount of options to display, but they quickly become chaotic as the number of options increases. To overcome this limit we can use the &#60;select&#62; tag switching it to multiple-choice mode with attribute multiple="multiple":<p class="paragraph"/><img border="0" class="center" src="../img/list-multiple-choices.png"></img><p class="paragraph"/>Now the user can select multiple options by holding down Ctrl key (or Command key for Mac) and selecting them.<p class="paragraph"/>To work with multiple choice list Wicket provides the <code>org.apache.wicket.markup.html.form.ListMultipleChoice</code> component:<p class="paragraph"/><strong class="bold">HTML:</strong><p class="paragraph"/><div class="code"><pre>&#60;select wicket:id=<span class="java&#45;quote">"fruits"</span>&#62;
+	&#60;option&#62;choice 1&#60;/option&#62;
+	&#60;option&#62;choice 2&#60;/option&#62;
+&#60;/select&#62;</pre></div><p class="paragraph"/><strong class="bold">Java code:</strong><p class="paragraph"/><div class="code"><pre>List&#60;<span class="java&#45;object">String</span>&#62; fruits = Arrays.asList(<span class="java&#45;quote">"apple"</span>, <span class="java&#45;quote">"strawberry"</span>, <span class="java&#45;quote">"watermelon"</span>); 
+form.add(<span class="java&#45;keyword">new</span> ListMultipleChoice(<span class="java&#45;quote">"fruits"</span>, <span class="java&#45;keyword">new</span> ListModel&#60;<span class="java&#45;object">String</span>&#62;(<span class="java&#45;keyword">new</span> ArrayList&#60;<span class="java&#45;object">String</span>&#62;()), fruits));</pre></div><p class="paragraph"/><strong class="bold">Screenshot:</strong><p class="paragraph"/><img border="0" class="center" src="../img/list-multiple-choices2.png"></img><p class="paragraph"/>This component must be bound to a &#60;select&#62; tag but the attribute multiple="multiple" is not required as it will automatically be added by the component.<p class="paragraph"/>The number of visible rows can be set with the setMaxRows(int maxRows) method.<p class="paragraph"/><h3>Component Palette</h3><p class="paragraph"/>While multiple choice list solves the problem of handling a big number of multiple choices, it is not much intuitive for end users. 
 That's why desktop GUIs have introduced a more complex component which can be generally referred to as multi select transfer component (it doesn't have an actual official name):<p class="paragraph"/><img border="0" class="center" src="../img/multi-select-transfer-component.png"></img><p class="paragraph"/>This kind of component is composed by two multiple-choice lists, one on the left displaying the available options and the other one on the right displaying the selected options. User can move options from a list to another by double clicking on them or using the buttons placed between the two list.<p class="paragraph"/>Built-in <code>org.apache.wicket.extensions.markup.html.form.palette.Palette</code> component provides an out-of-the-box implementation of a multi select transfer component. It works in a similar way to ListMultipleChoice:<p class="paragraph"/><strong class="bold">HTML:</strong><p class="paragraph"/><div class="code"><pre>&#60;div wicket:id=<span class="java&#45;quot
 e">"palette"</span>&#62;
+   Select will be replaced by the actual content&#8230;
+	   &#60;select multiple=<span class="java&#45;quote">"multiple"</span>&#62;
+     &#60;option&#62;option1&#60;/option&#62;
+     &#60;option&#62;option2&#60;/option&#62;
+     &#60;option&#62;option3&#60;/option&#62;
+&#60;/div&#62;</pre></div><p class="paragraph"/><strong class="bold">Java code:</strong><p class="paragraph"/><div class="code"><pre>Person john = <span class="java&#45;keyword">new</span> Person(<span class="java&#45;quote">"John"</span>, <span class="java&#45;quote">"Smith"</span>);
+Person bob = <span class="java&#45;keyword">new</span> Person(<span class="java&#45;quote">"Bob"</span>, <span class="java&#45;quote">"Smith"</span>);
+Person jill = <span class="java&#45;keyword">new</span> Person(<span class="java&#45;quote">"Jill"</span>, <span class="java&#45;quote">"Smith"</span>);
+Person andrea = <span class="java&#45;keyword">new</span> Person(<span class="java&#45;quote">"Andrea"</span>, <span class="java&#45;quote">"Smith"</span>);<p class="paragraph"/>List&#60;Person&#62; theSmiths = Arrays.asList(john, bob, jill, andrea); 
+ChoiceRenderer render = <span class="java&#45;keyword">new</span> ChoiceRenderer(<span class="java&#45;quote">"name"</span>);<p class="paragraph"/>form.add(<span class="java&#45;keyword">new</span> Palette(<span class="java&#45;quote">"palette"</span>, Model.of(<span class="java&#45;keyword">new</span> ArrayList&#60;<span class="java&#45;object">String</span>&#62;()), <span class="java&#45;keyword">new</span> ListModel&#60;<span class="java&#45;object">String</span>&#62; (theSmiths), render, 5, <span class="java&#45;keyword">true</span>));</pre></div><p class="paragraph"/><strong class="bold">Screenshot:</strong><p class="paragraph"/><img border="0" class="center" src="../img/multi-select-transfer-component-wicket.png"></img><p class="paragraph"/>The last two parameters of the Palette's constructor (an integer value and a boolean value) are, respectively, the number of visible rows for the two lists and a flag to choose if we want to display the two optional buttons which move selec
 ted options up and down. The descriptions of the two lists (“Available” and “Selected”) can be customized providing two resources with keys palette.available and palette.selected.<p class="paragraph"/>The markup of this component uses a number of CSS classes which can be extended/overriden to customize the style of the component. We can find these classes and see which tags they decorate in the default markup file of the component:<p class="paragraph"/><div class="code"><pre>&#60;table cellspacing=<span class="java&#45;quote">"0"</span> cellpadding=<span class="java&#45;quote">"2"</span> class=<span class="java&#45;quote">"palette"</span>&#62;
+&#60;tr&#62;
+	&#60;td class=<span class="java&#45;quote">"header headerAvailable"</span>&#62;&#60;span wicket:id=<span class="java&#45;quote">"availableHeader"</span>&#62;&#91;available header&#93;&#60;/span&#62;&#60;/td&#62;
+	&#60;td&#62;&#38;&#35;160;&#60;/td&#62;
+	&#60;td class=<span class="java&#45;quote">"header headerSelected"</span>&#62;&#60;span wicket:id=<span class="java&#45;quote">"selectedHeader"</span>&#62;&#91;selected header&#93;&#60;/span&#62;                                           
+        &#60;/td&#62; 
+&#60;/tr&#62;
+&#60;tr&#62;
+	&#60;td class=<span class="java&#45;quote">"pane choices"</span>&#62;
+		&#60;select wicket:id=<span class="java&#45;quote">"choices"</span> class=<span class="java&#45;quote">"choicesSelect"</span>&#62;&#91;choices&#93;&#60;/select&#62;	
+	&#60;/td&#62;
+	&#60;td class=<span class="java&#45;quote">"buttons"</span>&#62;
+		&#60;button type=<span class="java&#45;quote">"button"</span> wicket:id=<span class="java&#45;quote">"addButton"</span> class=<span class="java&#45;quote">"button add"</span>&#62;&#60;div/&#62; 
+               &#60;/button&#62;&#60;br/&#62;
+		&#60;button type=<span class="java&#45;quote">"button"</span> wicket:id=<span class="java&#45;quote">"removeButton"</span> class=<span class="java&#45;quote">"button remove"</span>&#62;&#60;div/&#62; 
+               &#60;/button&#62;&#60;br/&#62;
+		&#60;button type=<span class="java&#45;quote">"button"</span> wicket:id=<span class="java&#45;quote">"moveUpButton"</span> class=<span class="java&#45;quote">"button up"</span>&#62;&#60;div/&#62;  
+               &#60;/button&#62;&#60;br/&#62;
+		&#60;button type=<span class="java&#45;quote">"button"</span> wicket:id=<span class="java&#45;quote">"moveDownButton"</span> class=<span class="java&#45;quote">"button down"</span>&#62;&#60;div/&#62;  
+               &#60;/button&#62;&#60;br/&#62;
+	&#60;/td&#62;
+	&#60;td class=<span class="java&#45;quote">"pane selection"</span>&#62;
+		&#60;select class=<span class="java&#45;quote">"selectionSelect"</span> wicket:id=<span class="java&#45;quote">"selection"</span>&#62;&#91;selection&#93;&#60;/select&#62;	
+	&#60;/td&#62;
+&#60;/tr&#62;
+&#60;/table&#62;</pre></div>
 
 
                 <div style="clear:both;margin-top:15px;"></div>
@@ -191,7 +228,7 @@ Forms are the standard solution to let u
 <div id="footer">
     
 Copyright &copy; 2013-2014 — <a href="http://www.apache.org/" target="_blank">The Apache Software Foundation</a> 
-                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-10)</b>
+                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-24)</b>
 
     
 </div>

Added: wicket/common/site/trunk/_site/guide/guide/pages/forms2_13.html
URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/_site/guide/guide/pages/forms2_13.html?rev=1589849&view=auto
==============================================================================
--- wicket/common/site/trunk/_site/guide/guide/pages/forms2_13.html (added)
+++ wicket/common/site/trunk/_site/guide/guide/pages/forms2_13.html Thu Apr 24 19:41:13 2014
@@ -0,0 +1,202 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+    <title>12.13 Summary 6.x</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <link rel="stylesheet" href="../css/main.css" type="text/css" media="screen, print" title="Style" charset="utf-8"/>
+    <link rel="stylesheet" href="../css/pdf.css" type="text/css" media="print" title="PDF" charset="utf-8"/>
+    <script type="text/javascript">
+function addJsClass() {
+    var classes = document.body.className.split(" ");
+    classes.push("js");
+    document.body.className = classes.join(" ");
+}
+    </script>
+</head>
+
+<body class="body" onload="addJsClass();">
+<div id="navigation">
+    <ul>
+        <li>
+            <div id="nav-summary" onmouseover="toggleNavSummary(false)" onmouseout="toggleNavSummary(true)">
+                <a href="../../guide/index.html" class="button">Table of contents</a>
+
+                <div id="nav-summary-childs" style="display:none;">
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/introduction.html"><strong>1</strong><span>Introduction</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/howToSource.html"><strong>2</strong><span>How to use the example code</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/whyLearn.html"><strong>3</strong><span>Why should I learn Wicket?</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/helloWorld.html"><strong>4</strong><span>Wicket says &ldquo;Hello world!&rdquo;</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/layout.html"><strong>5</strong><span>Wicket as page layout manager</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/keepControl.html"><strong>6</strong><span>Keeping control over HTML</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/componentLifecycle.html"><strong>7</strong><span>Components lifecycle</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/versioningCaching.html"><strong>8</strong><span>Page versioning and caching</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/requestProcessing.html"><strong>9</strong><span>Under the hood of the request processing</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/urls.html"><strong>10</strong><span>Wicket Links and URL generation</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/modelsforms.html"><strong>11</strong><span>Wicket models and forms</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/forms2.html"><strong>12</strong><span>Wicket forms in detail</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/repeaters.html"><strong>13</strong><span>Displaying multiple items with repeaters</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/i18n.html"><strong>14</strong><span>Internationalization with Wicket</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/resources.html"><strong>15</strong><span>Resource management with Wicket</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/jsintegration.html"><strong>16</strong><span>An example of integration with JavaScript</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/advanced.html"><strong>17</strong><span>Wicket advanced topics</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/ajax.html"><strong>18</strong><span>Working with AJAX</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/jee.html"><strong>19</strong><span>Integration with enterprise containers</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/nativewebsockets.html"><strong>20</strong><span>Native WebSockets</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/security.html"><strong>21</strong><span>Security with Wicket</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/testing.html"><strong>22</strong><span>Test Driven Development with Wicket</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/testingspring.html"><strong>23</strong><span>Test Driven Development with Wicket and Spring</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/bestpractices.html"><strong>24</strong><span>Wicket Best Practices</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/maven.html"><strong>25</strong><span>Working with Maven (Appendix)</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/wicketstuff.html"><strong>26</strong><span>Project WicketStuff (Appendix)</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/redirects.html"><strong>27</strong><span>Lost In Redirection With Apache Wicket (Appendix)</span></a>
+                    </div>
+                    
+                    <div class="toc-item" style="margin-left:0"><a href="../../guide/contributing.html"><strong>28</strong><span>Contributing to this guide (Appendix)</span></a>
+                    </div>
+                    
+                </div>
+            </div>
+        </li>
+        <li class="separator selected">
+            <a id="ref-button" onclick="localToggle(); return false;" href="#">Quick Reference</a>
+        </li>
+    </ul>
+</div>
+<div id="header">
+    <div class="images clearfix">
+        
+        <span id="logo"><a href="/" target="_blank"><img height="80px" src="http://wicket.apache.org/guide/img/apache-wicket.png"/></a></span>
+        
+        
+        <span id="sponsor"><a href="http://www.apache.org/" target="_blank"><img height="60px" src="http://wicket.apache.org/guide/img/asf_logo.gif"/></a></span>
+        
+    </div>
+    <p>Free Online Guide for Apache Wicket framework</p>
+</div>
+
+
+<table id="colset" border="0" cellpadding="0" cellspacing="0">
+    <tr>
+        <td id="col1">
+            <div id="main" class="corner-all">
+
+                
+                    <div class="toc-item prev-left"><a href="../../guide/modelsforms.html">&lt;&lt; <strong>11</strong><span>Wicket models and forms</span></a></div>
+                
+
+                <span id='toggle-col1' class="toggle">(<a href="#" onclick="localToggle(); return false;">Quick Reference</a>)</span>
+
+                
+                    <div class="toc-item next-right"><a href="../../guide/repeaters.html"><strong>13</strong><span>Displaying multiple items with repeaters</span> >></a></div>
+                
+
+
+                <div class="project">
+                    <h1>12.13 Summary - Reference Documentation</h1>
+
+                    <p><strong>Authors:</strong> Andrea Del Bene, Martin Grigorov, Carsten Hufe, Christian Kroemer, Daniel Bartl, Paul Borș</p>
+
+                    <p><strong>Version:</strong> 6.x</p>
+
+                    
+                </div>
+
+                
+
+                
+
+<h2 id="forms2_13">12.13 Summary</h2>
+
+Forms are the standard solution to let users interact with our web applications. In this chapter we have seen the three steps involved with the form processing workflow in Wicket. We have started looking at form validation and feedback messages generation, then we have seen how Wicket converts input values into Java objects and vice versa.<p class="paragraph"/>In the second part of the chapter we learnt how to build reusable form components and how to  implement a stateless form. We have ended the chapter with an overview of the built-in form components needed to handle standard input form elements like checkboxes, radio buttons and multiple selections lists.<p class="paragraph"/>
+
+
+
+                <div style="clear:both;margin-top:15px;"></div>
+                
+                    <div class="toc-item prev-left"><a href="../../guide/modelsforms.html">&lt;&lt; <strong>11</strong><span>Wicket models and forms</span></a></div>
+                
+                    <div class="toc-item next-right"><a href="../../guide/repeaters.html"><strong>13</strong><span>Displaying multiple items with repeaters</span> >></a></div>
+                
+                <div style="clear:both"></div>
+            </div>
+        </td>
+        <td id="col2">
+            <div class="local clearfix">
+                <div class="local-title">
+                    <a href="../../guide/index.html" target="mainFrame">Quick Reference</a>
+                    <span class="toggle">(<a href="#" onclick="localToggle(); return false;">hide</a>)</span>
+                </div>
+                <div class="menu">
+                    
+                </div>
+            </div>
+        </td>
+    </tr>
+</table>
+
+<div id="footer">
+    
+Copyright &copy; 2013-2014 — <a href="http://www.apache.org/" target="_blank">The Apache Software Foundation</a> 
+                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-24)</b>
+
+    
+</div>
+
+<script type="text/javascript" src="../js/docs.js"></script>
+
+</body>
+</html>

Modified: wicket/common/site/trunk/_site/guide/guide/pages/forms2_2.html
URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/_site/guide/guide/pages/forms2_2.html?rev=1589849&r1=1589848&r2=1589849&view=diff
==============================================================================
--- wicket/common/site/trunk/_site/guide/guide/pages/forms2_2.html (original)
+++ wicket/common/site/trunk/_site/guide/guide/pages/forms2_2.html Thu Apr 24 19:41:13 2014
@@ -250,7 +250,7 @@ Remember that component model is updated
 <div id="footer">
     
 Copyright &copy; 2013-2014 — <a href="http://www.apache.org/" target="_blank">The Apache Software Foundation</a> 
-                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-10)</b>
+                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-24)</b>
 
     
 </div>

Modified: wicket/common/site/trunk/_site/guide/guide/pages/forms2_3.html
URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/_site/guide/guide/pages/forms2_3.html?rev=1589849&r1=1589848&r2=1589849&view=diff
==============================================================================
--- wicket/common/site/trunk/_site/guide/guide/pages/forms2_3.html (original)
+++ wicket/common/site/trunk/_site/guide/guide/pages/forms2_3.html Thu Apr 24 19:41:13 2014
@@ -249,7 +249,7 @@ If the user input can not be converted t
 <div id="footer">
     
 Copyright &copy; 2013-2014 — <a href="http://www.apache.org/" target="_blank">The Apache Software Foundation</a> 
-                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-10)</b>
+                      — <b style="color:#E8590A !important;">(Generated on: 2014-04-24)</b>
 
     
 </div>