bruno 2003/07/24 05:42:20
Modified: src/blocks/woody/samples/forms form2_bind_bean.xml form2_bind_xml.xml form2_data.xml form2_jx.xml form2_model.xml form2_template.xsp Log: Extended example with a Date and integer field Revision Changes Path 1.3 +2 -0 cocoon-2.1/src/blocks/woody/samples/forms/form2_bind_bean.xml Index: form2_bind_bean.xml =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/samples/forms/form2_bind_bean.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- form2_bind_bean.xml 23 Jul 2003 21:08:55 -0000 1.2 +++ form2_bind_bean.xml 24 Jul 2003 12:42:19 -0000 1.3 @@ -13,6 +13,8 @@ <!-- the email value will not be saved because of the @readonly --> <wb:field id="email" path="email" readonly="true"/> <wb:field id="ipaddress" path="ipAddress"/> + <wb:field id="birthday" path="birthday"/> + <wb:field id="number" path="aNumber"/> <!-- An aggregatefield is a special kind of widget that lets the user edit the value of multiple widgets through one text box 1.2 +18 -26 cocoon-2.1/src/blocks/woody/samples/forms/form2_bind_xml.xml Index: form2_bind_xml.xml =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/samples/forms/form2_bind_xml.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- form2_bind_xml.xml 23 Jul 2003 15:18:22 -0000 1.1 +++ form2_bind_xml.xml 24 Jul 2003 12:42:19 -0000 1.2 @@ -3,39 +3,23 @@ | Binding template between | - form_data file (backend) | - and form_model file - | Mappings - | woody-widget <> backend-xpath - | __________________________________________________ - | {context} /data/wrapper/context - | {relative info context} info - | email email - | somebool - - - - not implemented yet - | account account/@size - | number1 number - | drinks - - - - not implemented yet - | phone phone - | cntr @cntr - | zone zone - | number number - | - | ipaddress ipaddress - - | {contacts-repeater} contacts | each row = contact - | firstname firstname - | lastname lastname - | email email - | phone phone/@nr --> <wb:context xmlns:wb="http://apache.org/cocoon/woody/binding/1.0" + xmlns:wd="http://apache.org/cocoon/woody/definition/1.0" path="/data/wrapper/context" > <wb:context path="info"> <!-- the email value will not be saved because of the @readonly --> <wb:field id="email" path="email" readonly="true"/> + <!-- jxpath binds to nodes as well as to attributes --> - <wb:field id="account" path="account/@size" /> - <wb:field id="number1" path="number" /> + <wb:field id="number" path="number/@value"> + <!-- for non-string datatypes, a convertor must be specified. These are + the same convertors as can be used in form definitions, but require an + extra datatype attribute. Here we use the default convertor for longs. --> + <wd:convertor datatype="long"/> + </wb:field> <!-- one entry field in the client maps through aggregate fields --> <wb:aggregate id="phone" path="phone" > @@ -48,11 +32,19 @@ </wb:context> - <wb:field id="ipaddress" path="ipaddress" > + <wb:field id="ipaddress" path="ipaddress"> <wb:on-update> <!-- if the value has changed, the attribute will be set --> - <wb:set-attribute name="changed" value="true" /> + <wb:set-attribute name="changed" value="true"/> </wb:on-update> + </wb:field> + + <wb:field id="birthday" path="birthday"> + <wd:convertor datatype="date" type="formatting"> + <wd:patterns> + <wd:pattern>yyyy-MM-dd</wd:pattern> + </wd:patterns> + </wd:convertor> </wb:field> 1.2 +3 -6 cocoon-2.1/src/blocks/woody/samples/forms/form2_data.xml Index: form2_data.xml =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/samples/forms/form2_data.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- form2_data.xml 22 Jul 2003 11:50:45 -0000 1.1 +++ form2_data.xml 24 Jul 2003 12:42:19 -0000 1.2 @@ -4,11 +4,7 @@ <info> <email boolBindingWorks="false">[EMAIL PROTECTED]</email> - <account size="3" /> - <number>22234</number> - <drinks> <!-- no binding available yet --> - <drink>Leffe</drink> - </drinks> + <number value="3"/> <phone cntr="32"> <zone>2</zone> @@ -17,6 +13,7 @@ </info> <ipaddress changed="false">10.34.44.78</ipaddress> + <birthday>1960-04-10</birthday> <contacts> <contact id="1" row-state="original"> @@ -33,4 +30,4 @@ </contact> </contacts> -</context></wrapper></data> \ No newline at end of file +</context></wrapper></data> 1.3 +4 -0 cocoon-2.1/src/blocks/woody/samples/forms/form2_jx.xml Index: form2_jx.xml =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/samples/forms/form2_jx.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- form2_jx.xml 23 Jul 2003 15:54:40 -0000 1.2 +++ form2_jx.xml 24 Jul 2003 12:42:19 -0000 1.3 @@ -6,6 +6,10 @@ Phone: +${form2bean.phoneCountry}-${form2bean.phoneZone}-${form2bean.phoneNumber} <br/> IP Address: ${form2bean.ipAddress} + <br/> + birthday: ${form2bean.birthday} + <br/> + number: ${form2bean.aNumber} <table border="1"> <tr> 1.3 +28 -1 cocoon-2.1/src/blocks/woody/samples/forms/form2_model.xml Index: form2_model.xml =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/samples/forms/form2_model.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- form2_model.xml 23 Jul 2003 15:19:20 -0000 1.2 +++ form2_model.xml 24 Jul 2003 12:42:19 -0000 1.3 @@ -37,7 +37,7 @@ </wd:validation> </wd:aggregatefield> - <wd:field id="ipaddress" required="true"> + <wd:field id="ipaddress"> <wd:label>Please enter your IP address</wd:label> <wd:datatype base="string"> <wd:validation> @@ -45,6 +45,33 @@ <wd:failmessage>Invalid IP address.</wd:failmessage> </wd:regexp> </wd:validation> + </wd:datatype> + </wd:field> + + <wd:field id="birthday" required="true"> + <wd:label>Your birthday (dd/MM/yyyy):</wd:label> + <wd:datatype base="date"> + <wd:convertor> + <wd:patterns> + <wd:pattern>dd/MM/yyyy</wd:pattern> + <!-- The above pattern is a non-locale-specific pattern. You can + also add locale-specific patterns by adding more wd:pattern elements + here, with a locale attribute on them. --> + </wd:patterns> + </wd:convertor> + </wd:datatype> + </wd:field> + + <wd:field id="number" required="true"> + <wd:label>Select a number:</wd:label> + <wd:datatype base="long"> + <wd:selection-list> + <wd:item value="1"/> + <wd:item value="2"/> + <wd:item value="3"/> + <wd:item value="4"/> + <wd:item value="5"/> + </wd:selection-list> </wd:datatype> </wd:field> 1.3 +14 -3 cocoon-2.1/src/blocks/woody/samples/forms/form2_template.xsp Index: form2_template.xsp =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/samples/forms/form2_template.xsp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- form2_template.xsp 23 Jul 2003 15:18:47 -0000 1.2 +++ form2_template.xsp 24 Jul 2003 12:42:19 -0000 1.3 @@ -17,15 +17,18 @@ <li>the email address is marked in the binding as "read-only", meaning it will only be bound from bean/xml to form, but not in the other direction. So you won't see it changed in the bean or the XML.</li> - <li>the binding supports currently only string properties (will change - soon). It also doesn't support all widget types yet (e.g. the + <li>The binding doesn't support all widget types yet (e.g. the multivaluefield is currently not yet supported).</li> + <li>Note how, in the XML binding, the date is formatted according XML + Schema date format in the XML, while it is displayed in another format + to the user, and is stored in the form model as a Java Date + object (useful for date-specific validations).</li> </ul> <p>If you're running the XML-binding demo, then after successful submit you'll see the updated XML.</p> <p>If you're running the bean-binding demo, then after successful submit you'll be shown a page that uses the JXTemplateGenerator to extract - data from the bean.</p> + data from the bean (to show that the bean really has been updated).</p> <form method="POST"> <xsp:attribute name="action"><xsp:expr><jpath:continuation/>+".continue"</xsp:expr></xsp:attribute> <table border="1"> @@ -40,6 +43,14 @@ <tr> <td valign="top"><wt:widget-label id="ipaddress"/></td> <td valign="top"><wt:widget id="ipaddress"/></td> + </tr> + <tr> + <td valign="top"><wt:widget-label id="birthday"/></td> + <td valign="top"><wt:widget id="birthday"/></td> + </tr> + <tr> + <td valign="top"><wt:widget-label id="number"/></td> + <td valign="top"><wt:widget id="number"/></td> </tr> </table>