blob: aa9dcf8f5d1f1d887ae47d4a6deab6361aad6288 [file] [log] [blame]
<?xml version="1.0"?>
<!--
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.
-->
<page>
<head>
<style type="text/css">
span.error {
font-style:italic;
font-weight:bold;
color:red;
background-color:#fffbe4;
}
</style>
</head>
<title>Form Validation And Pre-Population</title>
<body>
<h1>Reserve a car with Cocoon Cars!</h1>
<p>This last sample combines the techniques demonstrated in the
previous two samples. Default data is inserted filled into the
form using a combination of the SimpleFormInstanceTransformer and
the SimpleFormTransformer. In addition, user input is validated
with the FormValidatorAction and the submitted data is filled
in with another SimpleFormTransformer which also selects which
error tags shall occurr in the resulting page.</p>
<h2>Car Reservation</h2>
<p>Please fill in the form completely in order to reserve a car.</p>
<form name="car" method="post">
<!-- the transformer can be configured to look for the instance -->
<!-- data outside the form element. -->
<form-instance>
<persons>4</persons>
<deposit>50</deposit>
<email>your email</email>
<driver/>
<driver/>
<driver/>
</form-instance>
<table>
<tbody>
<tr>
<td>Choose a car seating capacity</td>
<td>
<select size="1" name="persons">
<option value="" selected="true" disabled="true">Please select</option>
<option value="2">2</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="7">7</option>
<option value="9">9</option>
</select>
</td>
<td>
<error name="persons" when-ge="error">*</error>
</td>
</tr>
<tr>
<td>Choose car type</td>
<td>
<select size="1" name="type">
<option value="" selected="true" disabled="true">Please select</option>
<option value="sedan">Sedan Car</option>
<option value="station">Station Wagon</option>
<option value="cabrio">Cabrio</option>
<option value="racing">Sports Car</option>
<option value="bus">Bus</option>
</select>
</td>
<td><error name="type" when-ge="error">*</error></td>
</tr>
<tr>
<td>Enter amount of the deposit</td>
<td><input type="text" size="4" name="deposit"/></td>
<td><error name="deposit" when-ge="error">*</error></td>
</tr>
<tr>
<td>Enter confirmation email address</td>
<td><input type="text" size="30" name="email"/></td>
<td><error name="email" when-ge="error">*</error></td>
</tr>
<tr>
<td>Enter billing address</td>
<td><textarea name="address" cols="30" rows="5"/></td>
<td><error name="address" when-ge="error">*</error></td>
</tr>
<!-- the following repeat tag inserts as many rows as -->
<!-- drivers were submitted on the request. -->
<repeat on="driver">
<tr>
<td>
Allowed driver <input name="driver" type="text" size="20" />
</td>
<td><error name="driver" when-ge="error">*</error></td>
</tr>
</repeat>
<tr>
<td colspan="2">
Validation errors, if any:
<ol>
<li><error name="*" when-ge="error">An error occurred. <span style="background-color: #aaaaaa;">Please check your input and the messages below</span> for more <br /> information.</error></li>
<li><error name="persons" when="too-small">The smallest car <br /> seats 2.</error></li>
<li><error name="persons" when="too-large">The largest car <br /> seats 9.</error></li>
<li><error name="deposit" when="too-small">The deposit needs to be <br /> at least EUR 50.</error></li>
<li><error name="deposit" when="is-null">Please specify a <br /> deposit.</error></li>
<li><error name="email" when="is-null">Please fill in an <br /> email address.</error></li>
<li><error name="email" when="no-match">Your email seems incorrect. <br /> Please fill in a correct email address.</error></li>
<li><error name="address" when="is-null">Please fill in a <br /> billing address.</error></li>
<li><error name="address" when="too-small">Your address seems <br /> to be incorrect. Please fill in a correct billing address.</error></li>
<li><error name="type" when="is-null">Please select the type of car <br /> you would like to drive.</error></li>
<li><error name="type" when="no-match">Please select one of <br /> the existing type of car.</error></li>
<li><error name="driver" when="error">Please enter at least <br /> one valid driver's name.</error></li>
</ol>
</td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="go" value="Go!"/></td>
</tr>
</tbody>
</table>
</form>
</body>
</page>