A document has been updated: http://cocoon.zones.apache.org/daisy/documentation/478.html
Document ID: 478 Branch: main Language: default Name: A Simple CForm Example (previously A Simple Example) Document Type: Cocoon Document (unchanged) Updated on: 10/15/08 4:09:08 PM Updated by: David Legg A new version has been created, state: publish Parts ===== Content ------- This part has been updated. Mime type: text/xml (unchanged) File name: (unchanged) Size: 16511 bytes (previous version: 15359 bytes) Content diff: (3 equal lines skipped) <h1>A simple CForms example</h1> <p>In this example we will show how to create a simple registration form using --- CForms and flowscript. We will follow to following steps:</p> +++ CForms and flowscript. We will follow the following steps:</p> <ol> <li>Create a block for this sample</li> (9 equal lines skipped) <h1>Create a block</h1> --- <p>This has been covered in the tutorial, but it won't hurt to recall this Maven --- goal:</p> +++ <p>This is covered in the tutorial "<a href="daisy:1159">Your first Cocoon +++ application using Maven 2</a>", but it won't hurt to repeat it here:</p> --- <pre>mvn org.apache.maven.plugins:maven-archetype-plugin:1.0-alpha-7:create --- -DarchetypeGroupId=org.apache.cocoon --- -DarchetypeArtifactId=cocoon-22-archetype-block --- -DarchetypeVersion=1.0.0-RC2 -DgroupId=com.mycompany --- -DartifactId=simple-sample</pre> +++ <p>Choose a suitable parent directory in which to create the following example +++ directory and then run this Maven command:</p> --- <p class="note">As of the writing of this page, the Maven archetype plugin --- version has to be specified, due to a bug in the current release of it.</p> +++ <pre>mvn archetype:generate -DarchetypeCatalog=http://cocoon.apache.org +++ </pre> --- <p>Edit the <tt>simple-sample/pom.xml</tt> file and add the support for Cocoon --- Forms:</p> +++ <p>Maven will generate some output and then interactively ask you for some +++ information. You should select item 2 (the cocoon-22-archetype-block):</p> +++ <pre>Choose archetype: +++ 1: remote -> cocoon-22-archetype-block-plain (Creates an empty Cocoon block; useful +++ if you want to add another block to a Cocoon application) +++ 2: remote -> cocoon-22-archetype-block (Creates a Cocoon block containing some small +++ samples) +++ 3: remote -> cocoon-22-archetype-webapp (Creates a web application configured to +++ host Cocoon blocks. Just add the block dependencies) +++ Choose a number: (1/2/3): <strong><strong>2</strong></strong> +++ </pre> +++ +++ <p>When Maven asks for more details of the block to be created answer as +++ follows:</p> +++ +++ <pre><strong> Define value for groupId: : <strong>com.mycompany</strong> +++ Define value for artifactId: : cformexample +++ Define value for version: 1.0-SNAPSHOT: : <strong>1.0.0</strong> +++ Define value for package: : <strong>com.mycompany.cformexample</strong> +++ </strong> </pre> +++ +++ <p>A new directory should appear called 'cformexample'.</p> +++ +++ <p>Change into this directory and edit the <tt>pom.xml</tt> file by adding a +++ dependency on Cocoon Forms:</p> +++ <pre><dependency> --- <groupId>org.apache.cocoon</groupId> --- <artifactId>cocoon-forms-impl</artifactId> --- <version>1.0.0-RC1</version> +++ <groupId>org.apache.cocoon</groupId> +++ <artifactId>cocoon-forms-impl</artifactId> +++ <version>1.1.0</version> </dependency> </pre> --- <p>Move in the <tt>simple-sample</tt> directory and build the block to ensure --- the playing field is set appropriately.</p> +++ <p>Build the block to ensure everything is set correctly:</p> <pre>mvn install</pre> --- <p>To access resources hold in the fomrs-impla and ajax-impl blocks, the Servlet --- Service Framework has to be instructed to fine them. Hence, open --- <tt>src/main/resources/META-INF/cocoon/spring/servlet-service.xml</tt> and add --- the following in the<tt> <servlet:context></tt> element:</p> +++ <p>To access resources held in the cocoon-forms-impl and cocoon-ajax-impl +++ blocks, the Servlet Service Framework has to be told how to find them. Hence, +++ open:</p> --- <pre><servlet:connections> --- <entry key="ajax" value-ref="org.apache.cocoon.ajax.impl.servlet"/> --- <entry key="forms" value-ref="org.apache.cocoon.forms.impl.servlet"/> --- </servlet:connections></pre> +++ <p><tt>src/main/resources/META-INF/cocoon/spring/block-servlet-service.xml</tt> +++ </p> +++ <p>Find the following line:</p> +++ +++ <pre><servlet:context mount-path="/cformexample" context-path="blockcontext:/cformexample/"/> +++ </pre> +++ +++ <p>and change it to look like this:</p> +++ +++ <pre><servlet:context mount-path="/cformexample" context-path="blockcontext:/cformexample/"> +++ <servlet:connections> +++ <entry key="ajax" value-ref="org.apache.cocoon.ajax.impl.servlet"/> +++ <entry key="forms" value-ref="org.apache.cocoon.forms.impl.servlet"/> +++ </servlet:connections> +++ </servlet:context> +++ </pre> +++ <h1>Create a form definition file</h1> <p>Below the form definition file is displayed, (189 equal lines skipped) <h1>Add some pipelines to the sitemap</h1> --- <p>The sitemap.xmap has to be modified as well:</p> +++ <p>The sitemap.xmap has to be modified (located in: src\main\resources\COB-INF): +++ </p> --- <p>First, an i18n dictionary has to be definied:</p> +++ <p>First, an i18n dictionary has to be defined:</p> <pre> <map:components> <map:transformers default="xslt"> (39 equal lines skipped) <map:generate type="jx" src="resource/internal/registration_success.jx"/> <map:serialize/> </map:match> --- </map:pipeline</pre> +++ </map:pipeline></pre> <p>Note the following things:</p> (2 equal lines skipped) forms catalogue does not have to be the default one, but here it is the only one and thus the default.</li> <li>In the <tt>map:flow</tt> tag our flowscript file is NOT declared, since --- Cocoon loads automatically what's in the <tt>flow</tt> directory.</li> +++ Cocoon automatically loads whatever is in the <tt>flow</tt> directory.</li> <li>Then we have the pipelines:</li> <ul> <li>The first two are for managing the flowscript: when someone hits the (9 equal lines skipped) javascript libraries, CSS files and images.</li> <li>Resources (XSL files, CSS, images, etc.) defined in the forms-impl and ajax-impl blocks are provided to this block by the Servlet Service Framework --- (look at the paramters given to <tt>forms-samples-styling.xsl</tt>).</li> +++ (look at the parameters given to <tt>forms-samples-styling.xsl</tt>).</li> </ul> </ul> (57 equal lines skipped) <p>Direct your browser to:</p> --- <pre>http://localhost:8888/simple-sample/registration +++ <pre>http://localhost:8888/cformexample/registration </pre> <p>Try entering incorrect data and see what it does.</p> (4 equal lines skipped) a simple form (though notice you didn't have to write any Java for all of this, nor to restart Cocoon), but adding more complexity to the form is now simply a matter of adding more widgets, custom validation logic, event handlers, etc. To --- have a feel for the power of CForms, take a look at the examples included +++ get a feel for the power of CForms, take a look at the examples included included in the Forms block.</p> </body> (1 equal lines skipped)