You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by re...@apache.org on 2007/09/27 21:57:38 UTC

svn commit: r580139 [11/28] - in /cocoon/site/site/2.2: ./ blocks/ blocks/ajax/ blocks/ajax/1.0/ blocks/ajax/1.0/apidocs/ blocks/ajax/1.0/css/ blocks/ajax/1.0/images/ blocks/ajax/1.0/images/logos/ blocks/css/ blocks/forms/ blocks/forms/1.0/ blocks/form...

Added: cocoon/site/site/2.2/blocks/forms/1.0/488_1_1.html
URL: http://svn.apache.org/viewvc/cocoon/site/site/2.2/blocks/forms/1.0/488_1_1.html?rev=580139&view=auto
==============================================================================
--- cocoon/site/site/2.2/blocks/forms/1.0/488_1_1.html (added)
+++ cocoon/site/site/2.2/blocks/forms/1.0/488_1_1.html Thu Sep 27 12:56:05 2007
@@ -0,0 +1,871 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+
+
+
+
+
+
+
+
+
+<html>
+  <head>
+    <title>            Cocoon Forms
+      </title>
+    <style type="text/css" media="all">
+      @import url("./css/maven-base.css");
+      @import url("./css/maven-theme.css");
+      @import url("./css/site.css");
+    </style>
+    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
+          <meta name="author" content="The Cocoon Community" />
+        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+  </head>
+  <body>
+    <div id="breadtrail">
+       <p><a href="http://www.apache.org">Apache</a> &raquo; <a href="../../../../">Cocoon</a> &raquo;</p>
+    </div>
+    <div id="top">
+      <div id="header">
+          <div class="projectlogo">
+             <a href="../../../../"><img class="logoImage"
+               src="images/cocoon_logo.jpg"
+                alt="Apache Cocoon" border="0" /></a>
+          </div>
+          <div class="grouplogo">
+             <p class="grouptitle"><a href="../../../../">The Apache Cocoon Project</a><img
+               src="images/apache-logo.jpg" alt="Cocoon Project Logo" /></p>
+                            <form class="searchbox" action="http://www.google.com/search" method="get">
+                 <input value="cocoon.apache.org" name="sitesearch" type="hidden" />
+                 <input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google" />&nbsp;
+                 <input class="searchboxsubmit" name="Search" value="Search" type="submit" />
+               </form>
+                      </div>
+         </div>
+         <div id="projectBar">
+           <p class="cocoonHome"><a href="../../../../"><img
+           src="images/pmc-home.gif"
+           alt="Back to Apache Cocoon homepage"
+           border="0" title="Back to Apache Cocoon homepage" /></a></p>
+           <h1 class="projectTitle"><a href="../../../../">              Cocoon Forms
+            1.0
+  </a></h1>
+                         <ul class="projectList">
+                <li><strong><a href="../../../../2.2/">Cocoon 2.2</a></em></strong></li>
+                <li><a href="../../../../2.2/core-modules/">Core <span class="pl-version-small">2.2</span></a></li>
+                <li><a href="../../../../2.2/blocks/">Blocks <span class="pl-version-small">2.2</span></a></li>
+                <li><a href="../../../../2.2/maven-plugins/">Maven Plugins <span class="pl-version-small">2.2</span></a></li>
+                <li><strong><a href="../../../../subprojects/">Subprojects</a></strong></li>
+              </ul>
+                     </div>
+         <div class="projectBarClear"><!-- --></div>
+      </div>
+<!-- end of top -->
+
+    <div id="content">
+         <ul id="menu">
+        <li>
+              Forms
+            <ul>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="489_1_1.html">Basics</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="477_1_1.html">Widgets</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="484_1_1.html">Widget concepts</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+                  
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="755_1_1.html">Form publishing</a>
+              </li>
+                  
+  
+
+
+              
+            
+            
+      
+              
+            <li class='menuExpand'>
+              <strong>Binding</strong>
+                <ul>
+                  
+    <li >
+              <strong>Binding Framework</strong>
+        </li>
+                  
+    <li >
+              <a href="743_1_1.html">Simple XML Binding</a>
+        </li>
+              </ul>
+        </li>
+                  
+  
+
+
+              
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="498_1_1.html">API</a>
+              </li>
+                  
+  
+
+
+              
+      
+              
+        <li class='menuCollapse'>
+              <a href="685_1_1.html">Form libraries</a>
+              </li>
+                  
+  
+
+
+              
+      
+              
+        <li class='menuCollapse'>
+              <a href="750_1_1.html">Ajax</a>
+              </li>
+              </ul>
+    </li>
+      <li>
+              Migration guide
+            <ul>
+                  
+    <li >
+              <a href="1351_1_1.html">Migration guide</a>
+        </li>
+              </ul>
+    </li>
+      <li>
+              Sitemap Components
+            <ul>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="904_1_1.html">Action</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="915_1_1.html">Generator</a>
+              </li>
+                  
+  
+
+
+              
+      
+              
+        <li class='menuCollapse'>
+              <a href="994_1_1.html">Transformer</a>
+              </li>
+              </ul>
+    </li>
+      <li>
+              Project Documentation
+            <ul>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="project-info.html">Project Information</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="project-reports.html">Project Reports</a>
+              </li>
+              </ul>
+    </li>
+      </ul>
+<!--
+                                     <a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy">
+            <img alt="Built by Maven" src="./images/logos/maven-feather.png"></img>
+          </a>
+                   <div id="lastPublished">
+                    
+                   Last Published: 26/09/2007 05:18
+       </div>
+-->
+         <div id="contentBody"><div id="bodyText"><h1 class="docTitle">Binding Framework</h1><h1 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">Intro</h1><p>Likely you will want to use CForms to &quot;edit stuff&quot;, such as the properties of
+a bean or data from an XML document (we'll simply use the term object to refer
+to either of these). This supposes that before you show the form, you copy the
+data from the object to the form, and after the form has been validated, you
+copy the data in the form back to the object. To avoid having to write actual
+code for this, a binding framework is available.</p><p>The same illustration as in the introduction, but now extended with the
+binding, can be viewed <a href="NO_LINK">here</a>.</p><p>The basic definition of a binding is as follows (if you don't know Java, just
+ignore this):</p><pre>public interface Binding {
+    public void loadFormFromModel(Widget frmModel, Object objModel);
+    public void saveFormToModel(Widget frmModel, Object objModel);
+}</pre><p>A binding can work with any object and can perform the binding in any
+possible way. Currently one implementation is available, based on
+<a href="http://jakarta.apache.org/commons/jxpath/index.html">JXPath</a>. JXPath
+allows to address data in both beans and XML documents using
+<a href="http://www.w3.org/TR/xpath">XPath</a> expressions, so this binding
+implementation can be used both with beans and XML documents. The rest of this
+document will focus on this implementation.</p><p>The binding is configured using an XML file. This XML file contains elements
+in the fb namespace (Forms Binding):</p><pre>http://apache.org/cocoon/forms/1.0#binding</pre><h1 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">What does a binding file look like?</h1><p>To give you an idea of what a binding file looks like, below a very simple
+example is shown.</p><pre>&lt;fb:context xmlns:fb=&quot;http://apache.org/cocoon/forms/1.0#binding&quot; path=&quot;/&quot; &gt;
+    &lt;fb:value id=&quot;firstname&quot; path=&quot;firstName&quot;/&gt;
+    &lt;fb:value id=&quot;lastname&quot; path=&quot;lastName&quot;/&gt;
+    &lt;fb:value id=&quot;email&quot; path=&quot;email&quot;/&gt;
+&lt;/fb:context&gt;</pre><p>The id attribute identifies the widget. The path attribute is the address of
+the items in the target object (a Javabean or an XML document). The paths can be
+arbitrary JXPath expressions.</p><p>[Convention] Let's call all elements in the fb namespace &quot;binding elements&quot;.
+They all cause a binding-related action to be performed.</p><p>The <tt>fb:context</tt> element changes the
+<a href="http://jakarta.apache.org/commons/jxpath/apidocs/org/apache/commons/jxpath/JXPathContext.html">JXPath
+context</a> to the specified path. The path expressions on the binding elements
+occuring inside the context element will then be evaluated in this context, thus
+relative to the path specified on the fb:context element.</p><p>The <tt>fb:value</tt> element is used to bind the value of a widget.</p><p>The binding framework can do much more than what is shown in the simple
+example above, so read on for more meat.</p><h1 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">Quick reference of supported binding elements</h1><table class="bodyTable">
+<tbody>
+<tr class="a">
+<th>
+<p>Element</p>
+</th>
+<th>
+<p>Description</p>
+</th>
+<th>
+<p>Attributes</p>
+</th>
+<th>
+<p>child elements</p>
+</th>
+</tr>
+<tr class="b">
+<td>
+<p>fb:*</p>
+</td>
+<td>
+<p>common settings for all bindings</p>
+</td>
+<td>
+<p>direction</p>
+</td>
+<td>
+<p>not applicable, see specific elements</p>
+</td>
+</tr>
+<tr class="a">
+<td>
+<p>fb:context</p>
+</td>
+<td>
+<p>changes the JXPath context</p>
+</td>
+<td>
+<p>path</p>
+</td>
+<td>
+<p>any</p>
+</td>
+</tr>
+<tr class="b">
+<td>
+<p>fb:value</p>
+</td>
+<td>
+<p>binds the value of widgets</p>
+</td>
+<td>
+<p>id, path</p>
+</td>
+<td>
+<p>fb:on-update, fd:convertor</p>
+</td>
+</tr>
+<tr class="a">
+<td>
+<p>fb:aggregate</p>
+</td>
+<td>
+<p>binds aggregatefield widgets</p>
+</td>
+<td>
+<p>id, path</p>
+</td>
+<td>
+<p>fb:value</p>
+</td>
+</tr>
+<tr class="b">
+<td>
+<p>fb:repeater</p>
+</td>
+<td>
+<p>binds repeater widgets</p>
+</td>
+<td>
+<p>id, parent-path, row-path</p>
+</td>
+<td>
+<p>fb:identity, fb:on-bind, fb:on-delete-row, fb:on-insert-row</p>
+</td>
+</tr>
+<tr class="a">
+<td>
+<p>fb:identity</p>
+</td>
+<td>
+<p>specifies unique fields for a repeater row</p>
+</td>
+<td>
+<p>none</p>
+</td>
+<td>
+<p>fb:unique-field</p>
+</td>
+</tr>
+<tr class="b">
+<td>
+<p>fb:set-attribute</p>
+</td>
+<td>
+<p>sets an attribute to a fixed value</p>
+</td>
+<td>
+<p>name, value</p>
+</td>
+<td>
+<p>none</p>
+</td>
+</tr>
+<tr class="a">
+<td>
+<p>fb:delete-node</p>
+</td>
+<td>
+<p>deletes the current context node</p>
+</td>
+<td>
+<p>none</p>
+</td>
+<td>
+<p>none</p>
+</td>
+</tr>
+<tr class="b">
+<td>
+<p>fb:insert-node</p>
+</td>
+<td>
+<p>insert a node in an XML document</p>
+</td>
+<td>
+<p>src, xpath</p>
+</td>
+<td>
+<p>piece of XML that should be inserted</p>
+</td>
+</tr>
+<tr class="a">
+<td>
+<p>fb:insert-bean</p>
+</td>
+<td>
+<p>inserts an object in a list-type bean property</p>
+</td>
+<td>
+<p>addmethod, classname (optional)</p>
+</td>
+<td>
+<p>none</p>
+</td>
+</tr>
+<tr class="b">
+<td>
+<p>fb:simple-repeater</p>
+</td>
+<td>
+<p>binds repeater widgets</p>
+</td>
+<td>
+<p>id, parent-path,row-path, clear-before-load, delete-parent-if-empty</p>
+</td>
+<td>
+<p>any</p>
+</td>
+</tr>
+<tr class="a">
+<td>
+<p>fb:javascript</p>
+</td>
+<td>
+<p>write binding logic in Javascript</p>
+</td>
+<td>
+<p>id, path</p>
+</td>
+<td>
+<p>fb:load-form, fb:save-form</p>
+</td>
+</tr>
+<tr class="b">
+<td>
+<p>fb:custom</p>
+</td>
+<td>
+<p>write binding logic in Java</p>
+</td>
+<td>
+<p>id, path, class, builderclass,factorymethod</p>
+</td>
+<td>
+<p>fb:config</p>
+</td>
+</tr>
+</tbody>
+</table><h1 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">Detailed reference of binding elements</h1><h2 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">fb:*/@direction</h2><p>All Bindings share the ability to have the two distinct actions they provide
+(i.e. load and save) been enabled or disabled by setting the attribute direction
+to one of the following values:</p><table class="bodyTable">
+<tbody>
+<tr class="a">
+<th>
+<p>value</p>
+</th>
+<th>
+<p>load active?</p>
+</th>
+<th>
+<p>save active?</p>
+</th>
+</tr>
+<tr class="b">
+<td>
+<p>both(default)</p>
+</td>
+<td>
+<p>yes</p>
+</td>
+<td>
+<p>yes</p>
+</td>
+</tr>
+<tr class="a">
+<td>
+<p>load</p>
+</td>
+<td>
+<p>yes</p>
+</td>
+<td>
+<p>no</p>
+</td>
+</tr>
+<tr class="b">
+<td>
+<p>save</p>
+</td>
+<td>
+<p>no</p>
+</td>
+<td>
+<p>yes</p>
+</td>
+</tr>
+</tbody>
+</table><p>The default value 'both' for this attribute makes its use optional.</p><p><strong>NOTE</strong>: this setting replaces the @readonly attribute that was
+available only on selected bindings.</p><h2 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">fb:context</h2><p>Attributes:</p><ul>
+<li>path</li>
+<li>direction (optional)</li>
+</ul>Child elements: anyThe <tt>fb:context</tt> element changes the JXPath context to the specified
+path. The path expressions on the binding elements occuring inside the context
+element will then be evaluated in this context, thus relative to the path
+specified on the <tt>fb:context</tt> element.<p>The <tt>fb:context</tt> element is usually used in two occasions. First of
+all, it is used as the root element of the binding file; because an XML file
+must always have one root element, and you will usually want to perform more
+than one binding action.</p><p>Secondly, you use <tt>fb:context</tt> if you need to address multiple items
+having a common base path. On the one hand, this saves you on typing and helps
+readability, and on the other hand, this improves the performance of the
+binding. To illustrate this with an example, instead of doing this:</p><pre>...
+&lt;fb:value id=&quot;firstname&quot; path=&quot;info/person/firstName&quot;/&gt;
+&lt;fb:value id=&quot;lastname&quot; path=&quot;info/person/lastName&quot;/&gt;
+...</pre><p>it is better to do this:</p><pre>...
+&lt;fb:context path=&quot;info/person&quot;&gt;
+  &lt;fb:value id=&quot;firstname&quot; path=&quot;firstName&quot;/&gt;
+  &lt;fb:value id=&quot;lastname&quot; path=&quot;lastName&quot;/&gt;
+&lt;/fb:context&gt;
+...</pre><h2 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">fb:value</h2><p>Attributes:</p><ul>
+<li>id</li>
+<li>path</li>
+<li>direction (optional)</li>
+</ul>Child elements:<ul>
+<li>fb:on-update (optional)</li>
+<li>fd:convertor (note the fd: namespace!) (optional)</li>
+</ul>This binding element is used to bind the value of a widget.The <tt>fb:on-update</tt> element (which itself has no attributes), can
+contain one or more binding elements that will be executed if the value of the
+widget has changed, and thus if the object has been updated. For example, you
+could use the <tt>fb:set-attribute</tt> binding to set the value of an attribute
+<tt>changed</tt> to <tt>true</tt>.The <tt>fd:convertor</tt> element has the same purpose as the
+<tt>fd:convertor</tt> element in the form definition: it converts between
+objects (numbers, dates) and strings. This is mostly used when binding to XML
+documents. Suppose you have defined a certain widget in a form definition to
+have a &quot;date&quot; datatype, and you want to bind to an XML document which contains
+the date in the XML Schema date representation, then you could define a
+convertor as follows:<pre>&lt;fb:value id=&quot;birthday&quot; path=&quot;person/birthday&quot;&gt;
+  &lt;fd:convertor datatype=&quot;date&quot; type=&quot;formatting&quot;&gt;
+    &lt;fd:patterns&gt;
+      &lt;fd:pattern&gt;yyyy-MM-dd&lt;/fd:pattern&gt;
+    &lt;/fd:patterns&gt;
+  &lt;/fd:convertor&gt;
+&lt;/fb:value&gt;</pre>The datatype attribute on the <tt>fd:convertor</tt> element, which you don't
+have to specify in the form definition, identifies the datatype to which the
+convertor belongs.<h2 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">fb:aggregate</h2><p>Attributes:</p><ul>
+<li>id</li>
+<li>path</li>
+<li>direction</li>
+</ul>Child elements:<ul>
+<li>fb:value elements</li>
+</ul>The <tt>fb:aggregate</tt> element is used to bind aggregatefields. Remember
+that aggregatefields are a special type of widget that groups multiple field
+widgets and lets the user edit their values in one textbox, splitting the values
+out to the different widgets on submit based on a regexp.The <tt>fb:aggregate</tt> binding allows to bind the values of the individual
+field widgets out of which an aggregatefield widget consists. The bindings for
+these field widgets are specified by the fb:value child elements.<h2 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">fb:repeater</h2>Attributes:<ul>
+<li>id</li>
+<li>parent-path</li>
+<li>row-path</li>
+<li>row-path-insert (optional)</li>
+<li>direction (optional)</li>
+</ul>Child elements:<ul>
+<li>fb:identity</li>
+<li>fb:on-bind</li>
+<li>fb:on-delete-row</li>
+<li>fb:on-insert-row</li>
+</ul>The <tt>fb:repeater</tt> binding binds repeaters based on the concept that
+each row in the repeater is uniquely identified by the value(s) of one or more
+of its widgets. This unique identification is necessary to know which rows in
+the repeater correspond to which objects in the target collection, and is
+specified using a &lt;fb:identity&gt; child element.The <tt>id</tt> attribute denotes the id of the repeater as specified in the
+form definition.The <tt>parent-path</tt> and <tt>row-path</tt> attributes can best be
+understood when described differently for XML documents and Javabeans.For XML documents: If you have an XML structure like this:<pre>&lt;things&gt;
+   &lt;thing ... /&gt;
+   &lt;thing ... /&gt;
+&lt;/things&gt;</pre>then the parent-path attribute contains the path to the containing element
+(&quot;things&quot;) and the row-path attribute contains the path to the repeating element
+(&quot;thing&quot;).For beans: if your bean has a property &quot;things&quot; which is a Collection [or
+whathever JXPath supports as lists], then the parent-path should simply contain
+&quot;.&quot; and the row-path &quot;things&quot;.For both beans and XML documents there is an optional attribute
+row-path-insert which functions just like the row-path but is used for the
+nested on-insert-row binding (see below). By default the row-path-insert just
+takes the value of the row-path. By explicitely setting them different one can
+exploit one of the following use cases:<ul>
+<li>(1) use xpath-predicates in the row-path (note that you can not do that on
+the row-path-insert)</li>
+<li>(2) save the inserted rows in a different target-node of the backend model.
+</li>
+</ul>The three remaining child elements <tt>fb:on-bind</tt>,
+<tt>fb:on-delete-row</tt>, <tt>fb:on-insert-row</tt> should contain the binding
+elements that have to be executed in case of these three events.The children of the <tt>fb:on-bind</tt> element are executed when an existing
+repeater row is updated, or after inserting a new row. The JXPath context is
+automatically changed to match the current row.The children of the <tt>fb:on-delete-row</tt> element are executed when a
+repeater row has been deleted. If you want to delete the row, then put a
+<tt>&lt;fb:delete-node/&gt;</tt> in there. Alternatively, you could also use the
+<tt>fb:set-attribute</tt> binding to set e.g. an attribute status to deleted.
+<p>The children of the <tt>fb:on-insert-row</tt> are executed in case a new row
+has been added to the repeater. Typically this will contain a
+<tt>fb:insert-node</tt> or a <tt>fb:insert-bean</tt> binding (see the
+descriptions of these binding elements for more details).</p><h2 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">fb:identity</h2><p>Child elements:</p><ul>
+<li>fb:value widget bindings constituting the repeater row identity</li>
+</ul>The <tt>&lt;fb:identity&gt;</tt> is just a container for the child elements
+specifying the bindings of the row identity widgets.<p>The nested elements just describe regular value bindings (these can declare
+their own convertors if needed). Newly added rows in the repeater can (but
+should not) have a null value for the identity widget(s). Identity widgets
+typically are uneditable and are specified as &lt;fd:output&gt; widgets. If you
+don't need the identity widget(s) at the client, you don't need to add them to
+the template at all! This prevents, e.g., database IDs from getting to the
+client.</p><p><strong>NOTE:</strong> This 'identity' binding is only active in the 'load'
+operation, so specifying the direction=&quot;save&quot; is meaningless.</p><h2 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">fb:set-attribute</h2><p>Attributes:</p><ul>
+<li>name</li>
+<li>value</li>
+<li>direction (optional)</li>
+</ul>Child elements: noneSet the value of the attribute specified in the <tt>name</tt> attribute to
+the fixed string value specified in the <tt>value</tt> attribute.<strong>NOTE:</strong> This binding is never active in the 'load' operation,
+so there is no need to specify the <tt>direction=&quot;save&quot;</tt> to protect you
+model from being changed during load.<h2 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">fb:delete-node</h2><p>Attributes:</p><ul>
+<li>direction (optional)</li>
+</ul>Child elements: none<p>Deletes the current context node.</p><p><strong>NOTE:</strong> This binding is never active in the 'load' operation,
+so there is no need to specify the <tt>direction=&quot;save&quot;</tt> to protect you
+model from being changed during load.</p><h2 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">fb:insert-node</h2><p>Attributes:</p><ul>
+<li>src (optional)</li>
+<li>xpath (optional, only in combination with src)</li>
+<li>direction (optional)</li>
+</ul>Child elements: the piece of XML that should be insertedThis binding element can only be used when the target object is an XML
+document (DOM-tree).It inserts the content of the <tt>fb:insert-node</tt> element as child of the
+current context element, or, if a src attribute is specified, retrieves the XML
+from the specified source and inserts that as child of the current context
+element. In this last case, you can also supply an xpath attribute to select a
+specific element from the retrieved source.<p><strong>NOTE:</strong> This binding is never active in the 'load' operation,
+so there is no need to specify the <tt>direction=&quot;save&quot;</tt> to protect you
+model from being changed during load.</p><h2 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">fb:insert-bean</h2><p>Attributes:</p><ul>
+<li>addmethod</li>
+<li>classname (optional)</li>
+<li>direction (optional)</li>
+</ul>This binding element can only be used when the target object is a Javabean.
+If classname is specified it instantiates a new object of the type specified
+in the classname attribute and calls the method specified in the addmethod
+attribute on the current context object with the newly instantiated object as
+argument. If classname is not specified it will just call the addmethod (e.g. if
+the addmethod creates the new instance itself).<strong>NOTE:</strong> This binding is never active in the 'load' operation,
+so there is no need to specify the <tt>direction=&quot;save&quot;</tt> to protect you
+model from being changed during load.<h2 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">fb:simple-repeater</h2><p>Attributes:</p><ul>
+<li>id</li>
+<li>parent-path (same as in fb:repeater)</li>
+<li>row-path (same as in fb:repeater)</li>
+<li>clear-before-load (default true)</li>
+<li>delete-parent-if-empty (default false)</li>
+<li>direction (optional)</li>
+</ul>Child elements: anyA simple repeater binding that will replace (i.e. delete then re-add all) its
+content.Works with XML or with JavaBeans if a JXPath factory is set on the binding
+context.<h2 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">fb:javascript</h2>Attributes:<ul>
+<li>id</li>
+<li>path</li>
+<li>direction (optional)</li>
+</ul>Child elements:<ul>
+<li>fb:load-form</li>
+<li>fb:save-form</li>
+</ul>Specifies the binding using two JavaScript snippets, respectively for loading
+and saving the form.Example:<pre>&lt;fb:javascript id=&quot;foo&quot; path=&quot;@foo&quot;&gt;
+  &lt;fb:load-form&gt;
+    var appValue = jxpathPointer.getValue();
+    var formValue = doLoadConversion(appValue);
+    widget.setValue(formValue);
+  &lt;/fb:load-form&gt;
+  &lt;fb:save-form&gt;
+    var formValue = widget.getValue();
+    var appValue = doSaveConversion(formValue);
+    jxpathPointer.setValue(appValue);
+  &lt;/fb:save-form&gt;
+&lt;/fb:javascript&gt;</pre>This example is rather trivial and could be replaced by a simple
+<tt>&lt;fb:value&gt;</tt>, but it shows the available variables in the script:
+<ul>
+<li><tt>widget:</tt> the widget identified by the <tt>id</tt> attribute,</li>
+<li><tt>jxpathPointer:</tt> the JXPath pointer corresponding to the
+<tt>path</tt> attribute,</li>
+<li><tt>jxpathContext</tt> (not shown): the JXPath context corresponding to the
+<tt>path</tt> attribute</li>
+</ul>It's much more interesting to fill a selection list via
+<tt>fb:javascript</tt> as there is no built-in element for it at the moment.
+Imagine your binding bean contains a collection field:<pre>&lt;fb:javascript id=&quot;selectionListWidget&quot; path=&quot;objectCollection&quot; direction=&quot;load&quot;&gt;
+  &lt;fb:load-form&gt;
+    var collection = jxpathPointer.getNode();
+    widget.setSelectionList(collection, &quot;id&quot;, &quot;name&quot;)
+  &lt;/fb:load-form&gt;
+&lt;/fb:javascript&gt;</pre><strong>NOTE:</strong><ul>
+<li>The <tt>&lt;fb:save-form&gt;</tt> snippet should be ommitted if the
+<tt>direction</tt> attribute is set to load.</li>
+<li>The <tt>&lt;fb:load-form&gt;</tt> snippet should be ommitted if the
+<tt>direction</tt> attribute is set to save.</li>
+<li>The <tt>@readonly</tt> attribute supported in early versions of this binding
+has been replaced by the @direction attribute as supported now on all binding
+elements.</li>
+</ul><h2 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">fb:custom</h2>Attributes:<ul>
+<li>id (optional, if not provided the containing widget-context will be passed)
+</li>
+<li>path (optional, if not provided &quot;.&quot; is assumed)</li>
+<li>direction (optional)</li>
+<li>class (optional, if not present @builderclass and @factorymethod should be)
+</li>
+<li>builderclass (optional)</li>
+<li>factorymethod (optional)</li>
+</ul>Child elements:<ul>
+<li>fb:config</li>
+</ul>Allows to specify your own user-defined binding to be written in Java. There
+are two essential modes of operation reflected in two examples:Example 1 - No configuration required:<pre>&lt;fb:custom id=&quot;custom&quot; path=&quot;custom-value&quot;
+      class=&quot;org.apache.cocoon.forms.samples.bindings.CustomValueWrapBinding&quot;/&gt;</pre>This describes the classname of your user defined binding class.Above imposes the following requirements:<ol type="1">
+<li>there is a <tt>class</tt> CustomValueWrapBinding available in the specified
+package</li>
+<li>it has a default (i.e. no arguments) constructor</li>
+<li>it is a subclass of org.apache.cocoon.forms.binding.AbstractCustomBinding
+</li>
+</ol>This last will impose the implementation of two methods:<ul>
+<li>void doLoad(Widget widget, JXPathContext context) throws BindingException;
+</li>
+<li>void doSave(Widget widget, JXPathContext context) throws BindingException;
+</li>
+</ul>where the available arguments are<ul>
+<li><tt>widget</tt>: the widget identified by the <tt>id</tt> attribute,</li>
+<li><tt>context</tt>: the JXPath context corresponding to the <tt>path</tt>
+attribute</li>
+</ul>Example 2 - with nested configuration:<pre>  &lt;fb:custom id=&quot;config&quot; path=&quot;config-value&quot;
+      builderclass=&quot;org.apache.cocoon.forms.samples.bindings.CustomValueWrapBinding&quot;
+      factorymethod=&quot;createBinding&quot; &gt;
+      &lt;fb:config prefixchar=&quot;[&quot; suffixchar=&quot;]&quot; /&gt;
+  &lt;/fb:custom&gt;</pre>The additional requirements to your user defined classes are now:<ol type="1">
+<li>there is a <tt>builderclass</tt> CustomValueWrapBinding class having a
+static <tt>factorymethod</tt></li>
+<li>that can (optionally) take an org.w3c.dom.Element holding it's configuration
+</li>
+<li>and return an instance of your own user-defined binding which must be a non
+abstract subclass of org.apache.cocoon.forms.binding.AbstractCustomBinding</li>
+</ol></div><div class="editUrl"><div><em>Errors and Improvements?</em> If you see any errors or potential improvements in this document please help
+        us: <a href="http://cocoon.zones.apache.org/daisy/cdocs/488?branch=1&language=1">View, Edit or comment</a> on the latest development version (registration required).
+      </div></div></div>
+    </div>
+    <!-- end of content -->
+    <div id="footer">
+      <p>&#169;  
+          1999-2007
+    
+          The Apache Software Foundation
+        <br/>
+    
+    Last Published: 26/09/2007 05:18
+</p>
+    </div>
+    <script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+    </script>
+    <script type="text/javascript">
+      _uacct = "UA-1740622-3";
+      urchinTracker();
+    </script>
+  </body>
+</html>

Added: cocoon/site/site/2.2/blocks/forms/1.0/489_1_1.html
URL: http://svn.apache.org/viewvc/cocoon/site/site/2.2/blocks/forms/1.0/489_1_1.html?rev=580139&view=auto
==============================================================================
--- cocoon/site/site/2.2/blocks/forms/1.0/489_1_1.html (added)
+++ cocoon/site/site/2.2/blocks/forms/1.0/489_1_1.html Thu Sep 27 12:56:05 2007
@@ -0,0 +1,426 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+
+
+
+
+
+
+
+
+
+<html>
+  <head>
+    <title>            Cocoon Forms
+      </title>
+    <style type="text/css" media="all">
+      @import url("./css/maven-base.css");
+      @import url("./css/maven-theme.css");
+      @import url("./css/site.css");
+    </style>
+    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
+          <meta name="author" content="The Cocoon Community" />
+        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+  </head>
+  <body>
+    <div id="breadtrail">
+       <p><a href="http://www.apache.org">Apache</a> &raquo; <a href="../../../../">Cocoon</a> &raquo;</p>
+    </div>
+    <div id="top">
+      <div id="header">
+          <div class="projectlogo">
+             <a href="../../../../"><img class="logoImage"
+               src="images/cocoon_logo.jpg"
+                alt="Apache Cocoon" border="0" /></a>
+          </div>
+          <div class="grouplogo">
+             <p class="grouptitle"><a href="../../../../">The Apache Cocoon Project</a><img
+               src="images/apache-logo.jpg" alt="Cocoon Project Logo" /></p>
+                            <form class="searchbox" action="http://www.google.com/search" method="get">
+                 <input value="cocoon.apache.org" name="sitesearch" type="hidden" />
+                 <input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google" />&nbsp;
+                 <input class="searchboxsubmit" name="Search" value="Search" type="submit" />
+               </form>
+                      </div>
+         </div>
+         <div id="projectBar">
+           <p class="cocoonHome"><a href="../../../../"><img
+           src="images/pmc-home.gif"
+           alt="Back to Apache Cocoon homepage"
+           border="0" title="Back to Apache Cocoon homepage" /></a></p>
+           <h1 class="projectTitle"><a href="../../../../">              Cocoon Forms
+            1.0
+  </a></h1>
+                         <ul class="projectList">
+                <li><strong><a href="../../../../2.2/">Cocoon 2.2</a></em></strong></li>
+                <li><a href="../../../../2.2/core-modules/">Core <span class="pl-version-small">2.2</span></a></li>
+                <li><a href="../../../../2.2/blocks/">Blocks <span class="pl-version-small">2.2</span></a></li>
+                <li><a href="../../../../2.2/maven-plugins/">Maven Plugins <span class="pl-version-small">2.2</span></a></li>
+                <li><strong><a href="../../../../subprojects/">Subprojects</a></strong></li>
+              </ul>
+                     </div>
+         <div class="projectBarClear"><!-- --></div>
+      </div>
+<!-- end of top -->
+
+    <div id="content">
+         <ul id="menu">
+        <li>
+              Forms
+            <ul>
+                  
+  
+
+
+              
+            
+            
+      
+            
+      
+              
+            <li class='menuExpand'>
+              <strong>Basics</strong>
+                <ul>
+                  
+    <li >
+              <strong>Introduction</strong>
+        </li>
+                  
+    <li >
+              <a href="478_1_1.html">Sample</a>
+        </li>
+                  
+    <li >
+              <a href="752_1_1.html">Improving the sample</a>
+        </li>
+              </ul>
+        </li>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="477_1_1.html">Widgets</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="484_1_1.html">Widget concepts</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+                  
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="755_1_1.html">Form publishing</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="488_1_1.html">Binding</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="498_1_1.html">API</a>
+              </li>
+                  
+  
+
+
+              
+      
+              
+        <li class='menuCollapse'>
+              <a href="685_1_1.html">Form libraries</a>
+              </li>
+                  
+  
+
+
+              
+      
+              
+        <li class='menuCollapse'>
+              <a href="750_1_1.html">Ajax</a>
+              </li>
+              </ul>
+    </li>
+      <li>
+              Migration guide
+            <ul>
+                  
+    <li >
+              <a href="1351_1_1.html">Migration guide</a>
+        </li>
+              </ul>
+    </li>
+      <li>
+              Sitemap Components
+            <ul>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="904_1_1.html">Action</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="915_1_1.html">Generator</a>
+              </li>
+                  
+  
+
+
+              
+      
+              
+        <li class='menuCollapse'>
+              <a href="994_1_1.html">Transformer</a>
+              </li>
+              </ul>
+    </li>
+      <li>
+              Project Documentation
+            <ul>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="project-info.html">Project Information</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="project-reports.html">Project Reports</a>
+              </li>
+              </ul>
+    </li>
+      </ul>
+<!--
+                                     <a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy">
+            <img alt="Built by Maven" src="./images/logos/maven-feather.png"></img>
+          </a>
+                   <div id="lastPublished">
+                    
+                   Last Published: 26/09/2007 05:18
+       </div>
+-->
+         <div id="contentBody"><div id="bodyText"><h1 class="docTitle">Introduction</h1><h1 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">Introduction</h1><p>Cocoon has an advanced forms framework. Together with Flow and JXTemplates,
+Cocoon Forms (or <strong>CForms</strong>) provides a solid basis for building
+interactive web applications. Cocoon Forms handles complex use cases while still
+being simple enough to be used by non-Java-programmers who want to add forms to
+their site.</p><p>To create a form with CForms you need to define two things:</p><ul>
+<li>the form model</li>
+<li>the form template</li>
+</ul>The form model is defined by a <strong>form definition</strong>. This is an
+XML file describing the structure of the form, by declaring the widgets it
+consists of. This file doesn't contain any presentational information. Based on
+the form definition, a <strong>form instance</strong> can be created. This is a
+specific instance of the form that will hold actual data. The form defintion is
+to the form instance what a Java class is to a Java object, or what an XML
+Schema is to an XML document.Since the form definition is simply described in an XML file, this means you
+can create forms without any knowledge of Java. Unlike some other form
+frameworks, you don't need to write Java classes to hold form data.<p>As stated before, a form consists of a number of widgets. A
+<strong>widget</strong> is an object that knows how to read its state from a
+Request object, how to validate itself, and can generate an XML representation
+of itself. A widget can remember its state itself, so unlike e.g. Struts, you do
+not have to write a form bean for that purpose. A widget can hold strongly typed
+data. For example, you can indicate that a field should contain a date. If you
+do this, you can be assured that after the form is successfully validated, and
+you retrieve its value, you will get a Date object. So your own business logic
+doesn't need to care about converting strings to other types, and all the locale
+and formatting related issues of this.</p><p>CForms contains a flexible set of widgets that should cover most needs.
+However like everything in CForms, you can add new ones of your own. One special
+widget is the repeater widget, which &quot;repeats&quot; a number of other widgets
+multiple times, as is needed to generate table-like structures. Widgets can thus
+have child widgets, so a form instance is effectively a <strong>widget
+tree</strong>.</p><p>The presentation of the form is (usually) handled by a form template. The
+form themplate is an XML file (e.g. an XHTML file, but this could be any markup)
+and on the places you want a widget to appear, you insert a special tag
+referencing that widget. After processing by the Forms Template Transformer,
+these tags will be replaced by the XML representation of the widget, which
+contains all state information of the widget (its value, validation errors,
+...). These bits of XML can then be transformed to plain HTML by an XSLT. Note
+that this XSLT only has to know how to style certain kinds of widgets, but not
+individual widget instances itself. Thus one template in this XSLT can style all
+widgets of a certain type that appear on all forms you might have. Cocoon
+includes a flexible, configurable XSLT that covers most needs.</p><div class="note"><div><strong>Note: </strong>A new(er) alternative to the Forms Template Transformer is to
+use the JXTemplate Generator, for which a set of macros have been developed that
+support the same tags as the Forms Template Transformer. By using the JXTemplate
+Generator it is possible to embed some more complex logic in the template. Other
+then this, the concept remains the same and the description here and the image
+below are still valid. If in doubt, rather use the JXTemplate solution then the
+transformer.</div></div><p>Below a typical scenario is described to explain how things fit together:</p><p><img alt="forms_schema" name="forms_schema" height="358" width="653" src="images/389_1_1.img"></img></p><ul>
+<li>Initially, the controller logic asks the FormManager component to create a
+form instance based on a form definition (form definitions are cached, so
+creating an instance is very fast).</li>
+<li>The controller can then optionally pre-populate this form object with some
+data. To fill the form with data from a bean or XML document, a binding
+framework is available.</li>
+<li>Then the form is shown by calling a pipeline.</li>
+<li>When the form is submitted, the controller will let the form instance object
+process the request, so that all widgets can read their value from the request.
+Some might generate events, which will be handled by event handlers. Validation
+of the widget tree is also triggered, whereby all widgets will validate
+themselves based on widget validators described in the form definition. The
+controller can afterwards perform application-specific validation logic.</li>
+<li>If there were validation errors, the form will be redisplayed. Otherwise the
+controller will decide what's the next step, for example saving the form data
+back to a bean or calling some backend process using data from the form.</li>
+</ul><strong>Next step:</strong> have a look at a <a href="478_1_1.html">concrete
+sample</a> to get a feel for how things work.</div><div class="editUrl"><div><em>Errors and Improvements?</em> If you see any errors or potential improvements in this document please help
+        us: <a href="http://cocoon.zones.apache.org/daisy/cdocs/489?branch=1&language=1">View, Edit or comment</a> on the latest development version (registration required).
+      </div></div></div>
+    </div>
+    <!-- end of content -->
+    <div id="footer">
+      <p>&#169;  
+          1999-2007
+    
+          The Apache Software Foundation
+        <br/>
+    
+    Last Published: 26/09/2007 05:18
+</p>
+    </div>
+    <script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+    </script>
+    <script type="text/javascript">
+      _uacct = "UA-1740622-3";
+      urchinTracker();
+    </script>
+  </body>
+</html>

Added: cocoon/site/site/2.2/blocks/forms/1.0/490_1_1.html
URL: http://svn.apache.org/viewvc/cocoon/site/site/2.2/blocks/forms/1.0/490_1_1.html?rev=580139&view=auto
==============================================================================
--- cocoon/site/site/2.2/blocks/forms/1.0/490_1_1.html (added)
+++ cocoon/site/site/2.2/blocks/forms/1.0/490_1_1.html Thu Sep 27 12:56:05 2007
@@ -0,0 +1,492 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+
+
+
+
+
+
+
+
+
+<html>
+  <head>
+    <title>            Cocoon Forms
+      </title>
+    <style type="text/css" media="all">
+      @import url("./css/maven-base.css");
+      @import url("./css/maven-theme.css");
+      @import url("./css/site.css");
+    </style>
+    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
+          <meta name="author" content="The Cocoon Community" />
+        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+  </head>
+  <body>
+    <div id="breadtrail">
+       <p><a href="http://www.apache.org">Apache</a> &raquo; <a href="../../../../">Cocoon</a> &raquo;</p>
+    </div>
+    <div id="top">
+      <div id="header">
+          <div class="projectlogo">
+             <a href="../../../../"><img class="logoImage"
+               src="images/cocoon_logo.jpg"
+                alt="Apache Cocoon" border="0" /></a>
+          </div>
+          <div class="grouplogo">
+             <p class="grouptitle"><a href="../../../../">The Apache Cocoon Project</a><img
+               src="images/apache-logo.jpg" alt="Cocoon Project Logo" /></p>
+                            <form class="searchbox" action="http://www.google.com/search" method="get">
+                 <input value="cocoon.apache.org" name="sitesearch" type="hidden" />
+                 <input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google" />&nbsp;
+                 <input class="searchboxsubmit" name="Search" value="Search" type="submit" />
+               </form>
+                      </div>
+         </div>
+         <div id="projectBar">
+           <p class="cocoonHome"><a href="../../../../"><img
+           src="images/pmc-home.gif"
+           alt="Back to Apache Cocoon homepage"
+           border="0" title="Back to Apache Cocoon homepage" /></a></p>
+           <h1 class="projectTitle"><a href="../../../../">              Cocoon Forms
+            1.0
+  </a></h1>
+                         <ul class="projectList">
+                <li><strong><a href="../../../../2.2/">Cocoon 2.2</a></em></strong></li>
+                <li><a href="../../../../2.2/core-modules/">Core <span class="pl-version-small">2.2</span></a></li>
+                <li><a href="../../../../2.2/blocks/">Blocks <span class="pl-version-small">2.2</span></a></li>
+                <li><a href="../../../../2.2/maven-plugins/">Maven Plugins <span class="pl-version-small">2.2</span></a></li>
+                <li><strong><a href="../../../../subprojects/">Subprojects</a></strong></li>
+              </ul>
+                     </div>
+         <div class="projectBarClear"><!-- --></div>
+      </div>
+<!-- end of top -->
+
+    <div id="content">
+         <ul id="menu">
+        <li>
+              Forms
+            <ul>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="489_1_1.html">Basics</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+            
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+              
+            <li class='menuExpand'>
+              <a href="477_1_1.html">Widgets</a>
+                <ul>
+                  
+    <li >
+              <a href="477_1_1.html">Action widget</a>
+        </li>
+                  
+    <li >
+              <a href="486_1_1.html">Aggregatefield widget</a>
+        </li>
+                  
+    <li >
+              <a href="482_1_1.html">Booleanfield widget</a>
+        </li>
+                  
+    <li >
+              <a href="1161_1_1.html">Calculated fields</a>
+        </li>
+                  
+    <li >
+              <a href="1294_1_1.html">Captcha Widget</a>
+        </li>
+                  
+    <li >
+              <a href="742_1_1.html">Class/New (not really widgets)</a>
+        </li>
+                  
+    <li >
+              <a href="481_1_1.html">Field widget</a>
+        </li>
+                  
+    <li >
+              <a href="754_1_1.html">Form</a>
+        </li>
+                  
+    <li >
+              <a href="740_1_1.html">Group/Struct widget</a>
+        </li>
+                  
+    <li >
+              <a href="738_1_1.html">ImageMap widget</a>
+        </li>
+                  
+    <li >
+              <a href="497_1_1.html">Messages widget</a>
+        </li>
+                  
+    <li >
+              <strong>MultiValueField widget</strong>
+        </li>
+                  
+    <li >
+              <a href="492_1_1.html">Output widget</a>
+        </li>
+                  
+    <li >
+              <a href="494_1_1.html">RepeaterAction widget</a>
+        </li>
+                  
+    <li >
+              <a href="496_1_1.html">Repeater widget</a>
+        </li>
+                  
+    <li >
+              <a href="495_1_1.html">RowAction widget</a>
+        </li>
+                  
+    <li >
+              <a href="493_1_1.html">Submit widget</a>
+        </li>
+                  
+    <li >
+              <a href="739_1_1.html">Tree widget</a>
+        </li>
+                  
+    <li >
+              <a href="741_1_1.html">Union widget</a>
+        </li>
+                  
+    <li >
+              <a href="483_1_1.html">Upload widget</a>
+        </li>
+              </ul>
+        </li>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="484_1_1.html">Widget concepts</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+                  
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="755_1_1.html">Form publishing</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="488_1_1.html">Binding</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="498_1_1.html">API</a>
+              </li>
+                  
+  
+
+
+              
+      
+              
+        <li class='menuCollapse'>
+              <a href="685_1_1.html">Form libraries</a>
+              </li>
+                  
+  
+
+
+              
+      
+              
+        <li class='menuCollapse'>
+              <a href="750_1_1.html">Ajax</a>
+              </li>
+              </ul>
+    </li>
+      <li>
+              Migration guide
+            <ul>
+                  
+    <li >
+              <a href="1351_1_1.html">Migration guide</a>
+        </li>
+              </ul>
+    </li>
+      <li>
+              Sitemap Components
+            <ul>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="904_1_1.html">Action</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="915_1_1.html">Generator</a>
+              </li>
+                  
+  
+
+
+              
+      
+              
+        <li class='menuCollapse'>
+              <a href="994_1_1.html">Transformer</a>
+              </li>
+              </ul>
+    </li>
+      <li>
+              Project Documentation
+            <ul>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="project-info.html">Project Information</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="project-reports.html">Project Reports</a>
+              </li>
+              </ul>
+    </li>
+      </ul>
+<!--
+                                     <a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy">
+            <img alt="Built by Maven" src="./images/logos/maven-feather.png"></img>
+          </a>
+                   <div id="lastPublished">
+                    
+                   Last Published: 26/09/2007 05:18
+       </div>
+-->
+         <div id="contentBody"><div id="bodyText"><h1 class="docTitle">MultiValueField widget</h1><h1 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">Concept</h1><p>The fd:multivaluefield is similar to the <a href="481_1_1.html">field widget</a>
+but can take multiple values. Its purpose is to handle those (HTML) form
+controls which submit their multiple values as multiple (HTTP) request
+parameters with the same name.</p><div class="note"><div><strong>Note: </strong>Before Cocoon 2.1.8, multivaluefields required a selection list,
+since no input method was available for multivaluefields without a selection
+list. Since Cocoon 2.1.8, this requirement has been dropped and a free-entry
+multivaluefield styling is available.</div></div><p>The multivaluefield can be rendered in various ways, as described in the
+styling section.</p><p>The setValue and getValue methods of the multivaluefield take, respectively
+return, arrays of objects (i.e. Object[]). The type of the objects in these
+arrays should match the datatype declared for the widget.</p><h1 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">Definition</h1><pre>&lt;fd:multivaluefield id=&quot;...&quot; state=&quot;...&quot;&gt;
+  &lt;fd:label&gt;...&lt;/fd:label&gt;
+  &lt;fd:help&gt;...&lt;/fd:help&gt;
+  &lt;fd:hint&gt;...&lt;/fd:hint&gt;
+  &lt;fd:datatype base=&quot;...&quot;&gt;
+    [...]
+  &lt;/fd:datatype&gt;
+  &lt;fd:selection-list&gt;
+    [...]
+  &lt;/fd:selection-list&gt;
+  &lt;fd:validation&gt;
+    [...]
+  &lt;/fd:validation&gt;
+  &lt;fd:on-value-changed&gt;
+     [...]
+  &lt;/fd:on-value-changed&gt;
+  &lt;fd:on-create&gt;
+    [..]
+  &lt;/fd:on-create&gt;
+  &lt;fd:attributes&gt;
+    &lt;fd:attribute name=&quot;...&quot; value=&quot;...&quot;/&gt;
+  &lt;/fd:attributes&gt;
+&lt;/fd:multivaluefield&gt;</pre><p>Most of the elements and attributes have the same meaning as for the
+<a href="481_1_1.html">field</a> widget.</p><p>Note: A multivaluefield cannot have a required attribute, instead you should
+use the value-count <a href="484_1_1.html">validator</a> to check the number of
+values the user has selected.</p><h1 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">Template</h1><p>A multivaluefield is inserted into a template using the normal
+<tt>ft:widget</tt> tag:</p><pre>&lt;ft:widget id=&quot;...&quot;/&gt;
+</pre><h1 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">Styling (default HTML XSL)</h1><p>If the multivaluefield has a selection list, it will by default be rendered
+as a list in which multiple items can be selected. Alternative, more
+user-friendly styling options are also possible.</p><p>Rendering the multivaluefield as two listboxes between which the items can be
+moved:</p><pre>&lt;ft:widget id=&quot;...&quot;&gt;
+  &lt;fi:styling list-type=&quot;double-listbox&quot;&gt;
+    &lt;fi:available-label&gt;Available&lt;/fi:available-label&gt;
+    &lt;fi:selected-label&gt;Selected&lt;/fi:selected-label&gt;
+  &lt;/fi:styling&gt;
+&lt;/ft:widget&gt;
+</pre><p>Rendering the multivaluefield as checkboxes:</p><pre>&lt;ft:widget id=&quot;...&quot;&gt;
+  &lt;fi:styling list-type=&quot;checkbox&quot;/&gt;
+&lt;/ft:widget&gt;
+</pre><p>If the multivaluefield does not have a selection list, it will be styled as
+an input box with a listbox below it. Items can be entered in the input box,
+when pressing enter they are added to the listbox. Items can be deleted by
+selecting them and pressing the delete button. The items can be rearranged by
+selecting them and using ctrl+up/down arrow. An existing item can be edited by
+selecting it, editing the value and pressing ctrl+enter.</p><h1 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">API notes</h1><p>As mentioned above, the value of multivaluefield widget is a Java array. So
+when using the API from javascript, you also need to create a Java array. For
+example, if the datatype of the field is &quot;long&quot;, you could create an array as
+follows:</p><pre>var values = java.lang.reflect.Array.newInstance(java.lang.Long.TYPE, 3);
+values[0] = 1;
+values[1] = 2;
+values[2] = 3;
+multivaluefield.setValue(values);
+</pre></div><div class="editUrl"><div><em>Errors and Improvements?</em> If you see any errors or potential improvements in this document please help
+        us: <a href="http://cocoon.zones.apache.org/daisy/cdocs/490?branch=1&language=1">View, Edit or comment</a> on the latest development version (registration required).
+      </div></div></div>
+    </div>
+    <!-- end of content -->
+    <div id="footer">
+      <p>&#169;  
+          1999-2007
+    
+          The Apache Software Foundation
+        <br/>
+    
+    Last Published: 26/09/2007 05:18
+</p>
+    </div>
+    <script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+    </script>
+    <script type="text/javascript">
+      _uacct = "UA-1740622-3";
+      urchinTracker();
+    </script>
+  </body>
+</html>

Added: cocoon/site/site/2.2/blocks/forms/1.0/491_1_1.html
URL: http://svn.apache.org/viewvc/cocoon/site/site/2.2/blocks/forms/1.0/491_1_1.html?rev=580139&view=auto
==============================================================================
--- cocoon/site/site/2.2/blocks/forms/1.0/491_1_1.html (added)
+++ cocoon/site/site/2.2/blocks/forms/1.0/491_1_1.html Thu Sep 27 12:56:05 2007
@@ -0,0 +1,359 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+
+
+
+
+
+
+
+
+
+<html>
+  <head>
+    <title>            Cocoon Forms
+      </title>
+    <style type="text/css" media="all">
+      @import url("./css/maven-base.css");
+      @import url("./css/maven-theme.css");
+      @import url("./css/site.css");
+    </style>
+    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
+          <meta name="author" content="The Cocoon Community" />
+        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+  </head>
+  <body>
+    <div id="breadtrail">
+       <p><a href="http://www.apache.org">Apache</a> &raquo; <a href="../../../../">Cocoon</a> &raquo;</p>
+    </div>
+    <div id="top">
+      <div id="header">
+          <div class="projectlogo">
+             <a href="../../../../"><img class="logoImage"
+               src="images/cocoon_logo.jpg"
+                alt="Apache Cocoon" border="0" /></a>
+          </div>
+          <div class="grouplogo">
+             <p class="grouptitle"><a href="../../../../">The Apache Cocoon Project</a><img
+               src="images/apache-logo.jpg" alt="Cocoon Project Logo" /></p>
+                            <form class="searchbox" action="http://www.google.com/search" method="get">
+                 <input value="cocoon.apache.org" name="sitesearch" type="hidden" />
+                 <input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google" />&nbsp;
+                 <input class="searchboxsubmit" name="Search" value="Search" type="submit" />
+               </form>
+                      </div>
+         </div>
+         <div id="projectBar">
+           <p class="cocoonHome"><a href="../../../../"><img
+           src="images/pmc-home.gif"
+           alt="Back to Apache Cocoon homepage"
+           border="0" title="Back to Apache Cocoon homepage" /></a></p>
+           <h1 class="projectTitle"><a href="../../../../">              Cocoon Forms
+            1.0
+  </a></h1>
+                         <ul class="projectList">
+                <li><strong><a href="../../../../2.2/">Cocoon 2.2</a></em></strong></li>
+                <li><a href="../../../../2.2/core-modules/">Core <span class="pl-version-small">2.2</span></a></li>
+                <li><a href="../../../../2.2/blocks/">Blocks <span class="pl-version-small">2.2</span></a></li>
+                <li><a href="../../../../2.2/maven-plugins/">Maven Plugins <span class="pl-version-small">2.2</span></a></li>
+                <li><strong><a href="../../../../subprojects/">Subprojects</a></strong></li>
+              </ul>
+                     </div>
+         <div class="projectBarClear"><!-- --></div>
+      </div>
+<!-- end of top -->
+
+    <div id="content">
+         <ul id="menu">
+        <li>
+              Forms
+            <ul>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="489_1_1.html">Basics</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="477_1_1.html">Widgets</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="484_1_1.html">Widget concepts</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+                  
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="755_1_1.html">Form publishing</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="488_1_1.html">Binding</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+            
+              
+            <li class='menuExpand'>
+              <a href="498_1_1.html">API</a>
+                <ul>
+                  
+    <li >
+              <a href="498_1_1.html">Java API</a>
+        </li>
+                  
+    <li >
+              <strong>Javascript API</strong>
+        </li>
+              </ul>
+        </li>
+                  
+  
+
+
+              
+      
+              
+        <li class='menuCollapse'>
+              <a href="685_1_1.html">Form libraries</a>
+              </li>
+                  
+  
+
+
+              
+      
+              
+        <li class='menuCollapse'>
+              <a href="750_1_1.html">Ajax</a>
+              </li>
+              </ul>
+    </li>
+      <li>
+              Migration guide
+            <ul>
+                  
+    <li >
+              <a href="1351_1_1.html">Migration guide</a>
+        </li>
+              </ul>
+    </li>
+      <li>
+              Sitemap Components
+            <ul>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="904_1_1.html">Action</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="915_1_1.html">Generator</a>
+              </li>
+                  
+  
+
+
+              
+      
+              
+        <li class='menuCollapse'>
+              <a href="994_1_1.html">Transformer</a>
+              </li>
+              </ul>
+    </li>
+      <li>
+              Project Documentation
+            <ul>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="project-info.html">Project Information</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="project-reports.html">Project Reports</a>
+              </li>
+              </ul>
+    </li>
+      </ul>
+<!--
+                                     <a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy">
+            <img alt="Built by Maven" src="./images/logos/maven-feather.png"></img>
+          </a>
+                   <div id="lastPublished">
+                    
+                   Last Published: 26/09/2007 05:18
+       </div>
+-->
+         <div id="contentBody"><div id="bodyText"><h1 class="docTitle">Cocoon Forms: Javascript API</h1><h1 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">To be done</h1><p>To be done.</p></div><div class="editUrl"><div><em>Errors and Improvements?</em> If you see any errors or potential improvements in this document please help
+        us: <a href="http://cocoon.zones.apache.org/daisy/cdocs/491?branch=1&language=1">View, Edit or comment</a> on the latest development version (registration required).
+      </div></div></div>
+    </div>
+    <!-- end of content -->
+    <div id="footer">
+      <p>&#169;  
+          1999-2007
+    
+          The Apache Software Foundation
+        <br/>
+    
+    Last Published: 26/09/2007 05:18
+</p>
+    </div>
+    <script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+    </script>
+    <script type="text/javascript">
+      _uacct = "UA-1740622-3";
+      urchinTracker();
+    </script>
+  </body>
+</html>

Added: cocoon/site/site/2.2/blocks/forms/1.0/492_1_1.html
URL: http://svn.apache.org/viewvc/cocoon/site/site/2.2/blocks/forms/1.0/492_1_1.html?rev=580139&view=auto
==============================================================================
--- cocoon/site/site/2.2/blocks/forms/1.0/492_1_1.html (added)
+++ cocoon/site/site/2.2/blocks/forms/1.0/492_1_1.html Thu Sep 27 12:56:05 2007
@@ -0,0 +1,457 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+
+
+
+
+
+
+
+
+
+<html>
+  <head>
+    <title>            Cocoon Forms
+      </title>
+    <style type="text/css" media="all">
+      @import url("./css/maven-base.css");
+      @import url("./css/maven-theme.css");
+      @import url("./css/site.css");
+    </style>
+    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
+          <meta name="author" content="The Cocoon Community" />
+        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+  </head>
+  <body>
+    <div id="breadtrail">
+       <p><a href="http://www.apache.org">Apache</a> &raquo; <a href="../../../../">Cocoon</a> &raquo;</p>
+    </div>
+    <div id="top">
+      <div id="header">
+          <div class="projectlogo">
+             <a href="../../../../"><img class="logoImage"
+               src="images/cocoon_logo.jpg"
+                alt="Apache Cocoon" border="0" /></a>
+          </div>
+          <div class="grouplogo">
+             <p class="grouptitle"><a href="../../../../">The Apache Cocoon Project</a><img
+               src="images/apache-logo.jpg" alt="Cocoon Project Logo" /></p>
+                            <form class="searchbox" action="http://www.google.com/search" method="get">
+                 <input value="cocoon.apache.org" name="sitesearch" type="hidden" />
+                 <input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google" />&nbsp;
+                 <input class="searchboxsubmit" name="Search" value="Search" type="submit" />
+               </form>
+                      </div>
+         </div>
+         <div id="projectBar">
+           <p class="cocoonHome"><a href="../../../../"><img
+           src="images/pmc-home.gif"
+           alt="Back to Apache Cocoon homepage"
+           border="0" title="Back to Apache Cocoon homepage" /></a></p>
+           <h1 class="projectTitle"><a href="../../../../">              Cocoon Forms
+            1.0
+  </a></h1>
+                         <ul class="projectList">
+                <li><strong><a href="../../../../2.2/">Cocoon 2.2</a></em></strong></li>
+                <li><a href="../../../../2.2/core-modules/">Core <span class="pl-version-small">2.2</span></a></li>
+                <li><a href="../../../../2.2/blocks/">Blocks <span class="pl-version-small">2.2</span></a></li>
+                <li><a href="../../../../2.2/maven-plugins/">Maven Plugins <span class="pl-version-small">2.2</span></a></li>
+                <li><strong><a href="../../../../subprojects/">Subprojects</a></strong></li>
+              </ul>
+                     </div>
+         <div class="projectBarClear"><!-- --></div>
+      </div>
+<!-- end of top -->
+
+    <div id="content">
+         <ul id="menu">
+        <li>
+              Forms
+            <ul>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="489_1_1.html">Basics</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+            
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+              
+            <li class='menuExpand'>
+              <a href="477_1_1.html">Widgets</a>
+                <ul>
+                  
+    <li >
+              <a href="477_1_1.html">Action widget</a>
+        </li>
+                  
+    <li >
+              <a href="486_1_1.html">Aggregatefield widget</a>
+        </li>
+                  
+    <li >
+              <a href="482_1_1.html">Booleanfield widget</a>
+        </li>
+                  
+    <li >
+              <a href="1161_1_1.html">Calculated fields</a>
+        </li>
+                  
+    <li >
+              <a href="1294_1_1.html">Captcha Widget</a>
+        </li>
+                  
+    <li >
+              <a href="742_1_1.html">Class/New (not really widgets)</a>
+        </li>
+                  
+    <li >
+              <a href="481_1_1.html">Field widget</a>
+        </li>
+                  
+    <li >
+              <a href="754_1_1.html">Form</a>
+        </li>
+                  
+    <li >
+              <a href="740_1_1.html">Group/Struct widget</a>
+        </li>
+                  
+    <li >
+              <a href="738_1_1.html">ImageMap widget</a>
+        </li>
+                  
+    <li >
+              <a href="497_1_1.html">Messages widget</a>
+        </li>
+                  
+    <li >
+              <a href="490_1_1.html">MultiValueField widget</a>
+        </li>
+                  
+    <li >
+              <strong>Output widget</strong>
+        </li>
+                  
+    <li >
+              <a href="494_1_1.html">RepeaterAction widget</a>
+        </li>
+                  
+    <li >
+              <a href="496_1_1.html">Repeater widget</a>
+        </li>
+                  
+    <li >
+              <a href="495_1_1.html">RowAction widget</a>
+        </li>
+                  
+    <li >
+              <a href="493_1_1.html">Submit widget</a>
+        </li>
+                  
+    <li >
+              <a href="739_1_1.html">Tree widget</a>
+        </li>
+                  
+    <li >
+              <a href="741_1_1.html">Union widget</a>
+        </li>
+                  
+    <li >
+              <a href="483_1_1.html">Upload widget</a>
+        </li>
+              </ul>
+        </li>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="484_1_1.html">Widget concepts</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+                  
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="755_1_1.html">Form publishing</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="488_1_1.html">Binding</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="498_1_1.html">API</a>
+              </li>
+                  
+  
+
+
+              
+      
+              
+        <li class='menuCollapse'>
+              <a href="685_1_1.html">Form libraries</a>
+              </li>
+                  
+  
+
+
+              
+      
+              
+        <li class='menuCollapse'>
+              <a href="750_1_1.html">Ajax</a>
+              </li>
+              </ul>
+    </li>
+      <li>
+              Migration guide
+            <ul>
+                  
+    <li >
+              <a href="1351_1_1.html">Migration guide</a>
+        </li>
+              </ul>
+    </li>
+      <li>
+              Sitemap Components
+            <ul>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="904_1_1.html">Action</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="915_1_1.html">Generator</a>
+              </li>
+                  
+  
+
+
+              
+      
+              
+        <li class='menuCollapse'>
+              <a href="994_1_1.html">Transformer</a>
+              </li>
+              </ul>
+    </li>
+      <li>
+              Project Documentation
+            <ul>
+                  
+  
+
+
+              
+      
+            
+      
+            
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="project-info.html">Project Information</a>
+              </li>
+                  
+  
+
+
+              
+      
+            
+      
+              
+        <li class='menuCollapse'>
+              <a href="project-reports.html">Project Reports</a>
+              </li>
+              </ul>
+    </li>
+      </ul>
+<!--
+                                     <a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy">
+            <img alt="Built by Maven" src="./images/logos/maven-feather.png"></img>
+          </a>
+                   <div id="lastPublished">
+                    
+                   Last Published: 26/09/2007 05:18
+       </div>
+-->
+         <div id="contentBody"><div id="bodyText"><h1 class="docTitle">Output widget</h1><h1 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">Concept</h1><p>An fd:output widget is similar to a field widget, but its value is not
+editable. The value of an output widget must be set programmatically (or through
+binding). An output widget does not read its value from the request, so is most
+useful in the case where the form is stored accross requests (automatically the
+case when using flowscript). An output widget does not perform any validation,
+it is always considered to be valid.</p><div class="note"><div><strong>Note: </strong>The same can now be achieved using the normal
+<a href="481_1_1.html">Field widget</a> and <a href="733_1_1.html">Widget States</a>.
+</div></div><p><strong>Possible alternative:</strong> On each widget you can also store
+additional information (i.e. arbitrary Java objects) in attributes. See the Java
+API of the Widget interface, methods setAttribute and getAttribute. You can then
+retrieve these attributes using the JXTemplate generator.</p><h1 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">Definition</h1><pre>&lt;fd:output id=&quot;...&quot; state=&quot;...&quot;&gt;
+  &lt;fd:label&gt;...&lt;/fd:label&gt;
+  &lt;fd:help&gt;...&lt;/fd:help&gt;
+  &lt;fd:hint&gt;...&lt;/fd:hint&gt;
+  &lt;fd:initial-value&gt;...&lt;/fd:initial-value&gt;
+  &lt;fd:datatype base=&quot;...&quot;&gt;
+     [...]
+  &lt;/fd:datatype&gt;
+  &lt;fd:on-create&gt;
+    [...]
+  &lt;/fd:on-create&gt;
+  &lt;fd:attributes&gt;
+    &lt;fd:attribute name=&quot;...&quot; value=&quot;...&quot;/&gt;
+  &lt;/fd:attributes&gt;
+&lt;/fd:output&gt;</pre><p>See <a href="481_1_1.html">field widget</a> for a description of the
+configuration elements.</p><h1 xmlns:p="http://outerx.org/daisy/1.0#publisher" xmlns:ns="http://outerx.org/daisy/1.0">Template</h1><p>An output widget is inserted in a template using the ft:widget tag:</p><pre>&lt;ft:widget id=&quot;...&quot;/&gt;
+</pre></div><div class="editUrl"><div><em>Errors and Improvements?</em> If you see any errors or potential improvements in this document please help
+        us: <a href="http://cocoon.zones.apache.org/daisy/cdocs/492?branch=1&language=1">View, Edit or comment</a> on the latest development version (registration required).
+      </div></div></div>
+    </div>
+    <!-- end of content -->
+    <div id="footer">
+      <p>&#169;  
+          1999-2007
+    
+          The Apache Software Foundation
+        <br/>
+    
+    Last Published: 26/09/2007 05:18
+</p>
+    </div>
+    <script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+    </script>
+    <script type="text/javascript">
+      _uacct = "UA-1740622-3";
+      urchinTracker();
+    </script>
+  </body>
+</html>