dwinterfeldt    02/03/18 19:31:51

  Added:       web/validator index.jsp jsRegistration.jsp jsType.jsp
                        multiRegistration1.jsp multiRegistration2.jsp
                        registration.jsp staticJavascript.jsp type.jsp
               web/validator/WEB-INF struts-config.xml validation.xml
                        web.xml
  Log:
  Initial checkin for validator example webapp.
  
  Revision  Changes    Path
  1.1                  jakarta-struts/web/validator/index.jsp
  
  Index: index.jsp
  ===================================================================
  <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
  <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
  <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
  
  <html:html locale="true">
  <head>
  <title><bean:message key="index.title"/></title>
  <html:base/>
  </head>
  <body bgcolor="white">
  
  <logic:notPresent name="org.apache.struts.action.MESSAGE" scope="application">
    <font color="red">
      ERROR:  Application resources not loaded -- check servlet container
      logs for error messages.
    </font>
  </logic:notPresent>
  
  <logic:notPresent name="org.apache.commons.validator.VALIDATOR_RESOURCES" 
scope="application">
    <font color="red">
      ERROR:  Validator resources not loaded -- check Commons Logging
      logs for error messages.
    </font>
  </logic:notPresent>
  
  <h3><bean:message key="registrationForm.title"/></h3>
  <ul>
     <li><html:link page="/registration.jsp"><bean:message 
key="registrationForm.title"/></html:link></li>
     <li>
        <html:link page="/jsRegistration.jsp"><bean:message 
key="jsRegistrationForm.title"/></html:link> - 
        <bean:message key="jsRegistrationForm.description"/>
     </li>
     <li>
        <html:link page="/multiRegistration1.jsp"><bean:message 
key="multiRegistrationForm.title"/></html:link> - 
        <bean:message key="multiRegistrationForm.description"/>
     </li>
  </ul>
  
  <p>&nbsp;</p>
  
  <h3><bean:message key="typeForm.title"/></h3>
  <ul>
     <li>
        <html:link page="/type.jsp"><bean:message key="typeForm.title"/></html:link> -
        <bean:message key="typeForm.description"/>
     </li>
     <li>
        <html:link page="/jsType.jsp"><bean:message 
key="jsTypeForm.title"/></html:link> -
        <bean:message key="jsTypeForm.description"/>
     </li>
  </ul>
  
  <p>&nbsp;</p>
  
  <h3>Change Language | Changez Le Langage</h3>
  <ul>
     <li><html:link page="/locale.do?language=en">English | Anglais</html:link></li>
     <li>
        <html:link page="/locale.do?language=fr">French | Francais</html:link> - 
        <bean:message key="localeForm.fr"/>
     </li>
     <li>
        <html:link page="/locale.do?language=fr&country=CA">French Canadian | Francais 
Canadien</html:link> - 
        <bean:message key="localeForm.frCA"/>
     </li>
  </ul>
  
  <p>&nbsp;</p>
  
  <html:img page="/struts-power.gif" altKey="index.powered"/>
  
  </body>
  </html:html>
  
  
  
  1.1                  jakarta-struts/web/validator/jsRegistration.jsp
  
  Index: jsRegistration.jsp
  ===================================================================
  <%@ page language="java" %>
  <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
  <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
  <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
  
  <html:html>
  <head>
  <title><bean:message key="registrationForm.title"/></title>
  <html:base/>
  </head>
  <body bgcolor="white">
  
  <logic:messagesPresent>
     <bean:message key="errors.header"/>
     <ul>
     <html:messages id="error">
        <li><bean:write name="error"/></li>
     </html:messages>
     </ul><hr>
  </logic:messagesPresent>
  
  <html:form action="registration" onsubmit="return validateRegistrationForm(this);">
    <html:hidden property="action"/>
  
  <table border="0" width="100%">
    <tr>
      <th align="left">
        <bean:message key="registrationForm.firstname.displayname"/>
      </th>
      <td align="left">
        <html:text property="firstName" size="30" maxlength="30"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="registrationForm.lastname.displayname"/>
      </th>
      <td align="left">
        <html:text property="lastName" size="60" maxlength="60"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="registrationForm.addr.displayname"/>
      </th>
      <td align="left">
        <html:textarea property="addr" cols="40" rows="5"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="registrationForm.city.displayname"/>
      </th>
      <td align="left">
        <html:text property="cityStateZip.city" size="60" maxlength="60"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="registrationForm.stateprov.displayname"/>
      </th>
      <td align="left">
        <html:text property="cityStateZip.stateProv" size="60" maxlength="60"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="registrationForm.zippostal.displayname"/>
      </th>
      <td align="left">
        <html:text property="cityStateZip.zipPostal[1]" size="25" maxlength="25"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="registrationForm.phone.displayname"/>
      </th>
      <td align="left">
        <html:text property="phone" size="20" maxlength="20"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="registrationForm.email.displayname"/>
      </th>
      <td align="left">
        <html:text property="email" size="60" maxlength="60"/>
      </td>
    </tr>
    <tr colspan="1">
      <td>
        <html:submit property="submit" onclick="bCancel=false;">
           <bean:message key="button.save"/>
        </html:submit>
        &nbsp;
        <html:reset>
           <bean:message key="button.reset"/>
        </html:reset>
        &nbsp;
        <html:cancel onclick="bCancel=true;">
           <bean:message key="button.cancel"/>
        </html:cancel>    
      </td>
    </tr>
  </table>
  </html:form>
  
  <%-- 
     Referencing the registrationForm since they are identical 
     so I don't need a separate validation.xml listing just for this form.
  --%>
  <html:javascript formName="registrationForm"/>
  
  </body>
  </html:html>
  
  
  
  1.1                  jakarta-struts/web/validator/jsType.jsp
  
  Index: jsType.jsp
  ===================================================================
  <%@ page language="java" %>
  <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
  <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
  <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
  
  <html:html>
  <head>
  <title><bean:message key="typeForm.title"/></title>
  <html:base/>
  </head>
  <body bgcolor="white">
  
  <logic:messagesPresent>
     <bean:message key="errors.header"/>
     <ul>
     <html:messages id="error">
        <li><bean:write name="error"/></li>
     </html:messages>
     </ul><hr>
  </logic:messagesPresent>
  
  
  <html:form action="jsType" onsubmit="return validateJsTypeForm(this);">
    <html:hidden property="action"/>
  
  <table border="0">
    <tr>
      <th align="left">
        <bean:message key="typeForm.byte.displayname"/>
      </th>
      <td align="left">
        <html:text property="byte" size="15" maxlength="15"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="typeForm.short.displayname"/>
      </th>
      <td align="left">
        <html:text property="short" size="15" maxlength="15"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="typeForm.integer.displayname"/>
      </th>
      <td align="left">
        <html:text property="integer" size="15" maxlength="15"/>
      </td>
    </tr>
  <%--
    <tr>
      <th align="left">
        <bean:message key="typeForm.long.displayname"/>
      </th>
      <td align="left">
        <html:text property="long" size="15" maxlength="15"/>
      </td>
    </tr>
  --%>
    <tr>
      <th align="left">
        <bean:message key="typeForm.float.displayname"/>
      </th>
      <td align="left">
        <html:text property="float" size="15" maxlength="15"/>
      </td>
    </tr>
  <%--
    <tr>
      <th align="left">
        <bean:message key="typeForm.double.displayname"/>
      </th>
      <td align="left">
        <html:text property="double" size="15" maxlength="15"/>
      </td>
    </tr>
  --%>
    <tr>
      <th align="left">
        <bean:message key="typeForm.date.displayname"/>
      </th>
      <td align="left">
        <html:text property="date" size="15" maxlength="15"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="typeForm.creditCard.displayname"/>
      </th>
      <td align="left">
        <html:text property="creditCard" size="16" maxlength="16"/>
      </td>
    </tr>
    <tr>
      <td>
        <html:submit property="submit" onclick="bCancel=false;">
           <bean:message key="button.save"/>
        </html:submit>
        &nbsp;
        <html:reset>
           <bean:message key="button.reset"/>
        </html:reset>
        &nbsp;
        <html:cancel onclick="bCancel=true;">
           <bean:message key="button.cancel"/>
        </html:cancel>    
      </td>
    </tr>
  </table>
  
  </html:form>
  
  <html:javascript formName="jsTypeForm" dynamicJavascript="true" 
staticJavascript="false"/>
  <%-- This wouldn't work right in IE 5.0 when I made the source an attribute of the 
tag ??? --%>
  <SCRIPT LANGUAGE="Javascript1.1" src="staticJavascript.jsp"></script>
  
  </body>
  </html:html>
  
  
  
  1.1                  jakarta-struts/web/validator/multiRegistration1.jsp
  
  Index: multiRegistration1.jsp
  ===================================================================
  <%@ page language="java" %>
  <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
  <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
  <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
  
  <html:html>
  <head>
  <title><bean:message key="registrationForm.title"/></title>
  <html:base/>
  </head>
  <body bgcolor="white">
  
  <logic:messagesPresent>
     <bean:message key="errors.header"/>
     <ul>
     <html:messages id="error">
        <li><bean:write name="error"/></li>
     </html:messages>
     </ul><hr>
  </logic:messagesPresent>
  
  
  <html:form action="multiRegistration" onsubmit="return 
validateMultiRegistrationForm(this);">
    <html:hidden property="action"/>
    <html:hidden property="page" value="1"/>
  
  <table border="0" width="100%">
    <tr>
      <th align="left">
        <bean:message key="registrationForm.firstname.displayname"/>
      </th>
      <td align="left">
        <html:text property="firstName" size="30" maxlength="30"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="registrationForm.lastname.displayname"/>
      </th>
      <td align="left">
        <html:text property="lastName" size="60" maxlength="60"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="registrationForm.addr.displayname"/>
      </th>
      <td align="left">
        <html:textarea property="addr" cols="40" rows="5"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="registrationForm.city.displayname"/>
      </th>
      <td align="left">
        <html:text property="cityStateZip.city" size="60" maxlength="60"/>
      </td>
    </tr>
    <tr>
      <td>
        <html:submit property="submit" onclick="bCancel=false;">
           <bean:message key="button.save"/>
        </html:submit>
        &nbsp;
        <html:reset>
           <bean:message key="button.reset"/>
        </html:reset>
        &nbsp;
        <html:cancel onclick="bCancel=true;">
           <bean:message key="button.cancel"/>
        </html:cancel>    
      </td>
    </tr>
  </table>
  
  </html:form>
  
  <html:javascript formName="multiRegistrationForm" page="1"/>
  
  </body>
  </html:html>
  
  
  
  1.1                  jakarta-struts/web/validator/multiRegistration2.jsp
  
  Index: multiRegistration2.jsp
  ===================================================================
  <%@ page language="java" %>
  <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
  <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
  <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
  
  <html:html>
  <head>
  <title><bean:message key="registrationForm.title"/></title>
  <html:base/>
  </head>
  <body bgcolor="white">
  
  <logic:messagesPresent>
     <bean:message key="errors.header"/>
     <ul>
     <html:messages id="error">
        <li><bean:write name="error"/></li>
     </html:messages>
     </ul><hr>
  </logic:messagesPresent>
  
  
  <html:form action="multiRegistration" onsubmit="return 
validateMultiRegistrationForm(this);">
    <html:hidden property="action"/>
    <html:hidden property="page" value="2"/>
    
    <html:hidden property="firstName"/>
    <html:hidden property="lastName"/>
    <html:hidden property="addr"/>
    <html:hidden property="cityStateZip.city"/>
    
  
  <table border="0" width="100%">
    <tr>
      <th align="left">
        <bean:message key="registrationForm.stateprov.displayname"/>
      </th>
      <td align="left">
        <html:text property="cityStateZip.stateProv" size="60" maxlength="60"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="registrationForm.zippostal.displayname"/>
      </th>
      <td align="left">
        <html:text property="cityStateZip.zipPostal[1]" size="25" maxlength="25"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="registrationForm.phone.displayname"/>
      </th>
      <td align="left">
        <html:text property="phone" size="20" maxlength="20"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="registrationForm.email.displayname"/>
      </th>
      <td align="left">
        <html:text property="email" size="60" maxlength="60"/>
      </td>
    </tr>
    <tr>
      <td>
        <html:submit property="submit" onclick="bCancel=false;">
           <bean:message key="button.save"/>
        </html:submit>
        &nbsp;
        <html:reset>
           <bean:message key="button.reset"/>
        </html:reset>
        &nbsp;
        <html:cancel onclick="bCancel=true;">
           <bean:message key="button.cancel"/>
        </html:cancel>    
      </td>
    </tr>
  </table>
  
  </html:form>
  
  <html:javascript formName="multiRegistrationForm" page="2"/>
  
  </body>
  </html:html>
  
  
  
  1.1                  jakarta-struts/web/validator/registration.jsp
  
  Index: registration.jsp
  ===================================================================
  <%@ page language="java" %>
  <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
  <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
  <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
  
  <html:html>
  <head>
  <title><bean:message key="registrationForm.title"/></title>
  <html:base/>
  </head>
  <body bgcolor="white">
  
  <logic:messagesPresent>
     <bean:message key="errors.header"/>
     <ul>
     <html:messages id="error">
        <li><bean:write name="error"/></li>
     </html:messages>
     </ul><hr>
  </logic:messagesPresent>
  
  
  <html:form action="registration">
    <html:hidden property="action"/>
  
  <table border="0" width="100%">
    <tr>
      <th align="left">
        <bean:message key="registrationForm.firstname.displayname"/>
      </th>
      <td align="left">
        <html:text property="firstName" size="30" maxlength="30"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="registrationForm.lastname.displayname"/>
      </th>
      <td align="left">
        <html:text property="lastName" size="60" maxlength="60"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="registrationForm.addr.displayname"/>
      </th>
      <td align="left">
        <html:textarea property="addr" cols="40" rows="5"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="registrationForm.city.displayname"/>
      </th>
      <td align="left">
        <html:text property="cityStateZip.city" size="60" maxlength="60"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="registrationForm.stateprov.displayname"/>
      </th>
      <td align="left">
        <html:text property="cityStateZip.stateProv" size="60" maxlength="60"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="registrationForm.zippostal.displayname"/>
      </th>
      <td align="left">
        <html:text property="cityStateZip.zipPostal[1]" size="25" maxlength="25"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="registrationForm.phone.displayname"/>
      </th>
      <td align="left">
        <html:text property="phone" size="20" maxlength="20"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="registrationForm.email.displayname"/>
      </th>
      <td align="left">
        <html:text property="email" size="60" maxlength="60"/>
      </td>
    </tr>
    <tr>
      <td>
        <html:submit property="submit">
           <bean:message key="button.save"/>
        </html:submit>
        &nbsp;
        <html:reset>
           <bean:message key="button.reset"/>
        </html:reset>
        &nbsp;
        <html:cancel>
           <bean:message key="button.cancel"/>
        </html:cancel>    
      </td>
    </tr>
  </table>
  
  </html:form>
  
  </body>
  </html:html>
  
  
  
  1.1                  jakarta-struts/web/validator/staticJavascript.jsp
  
  Index: staticJavascript.jsp
  ===================================================================
  <%@ page language="java" %>
  <%-- set document type to Javascript (addresses a bug in Netscape according to a web 
resource --%>
  <%@ page contentType="application/x-javascript" %>
  
  <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
  
  <html:javascript dynamicJavascript="false" staticJavascript="true"/>
  
  
  1.1                  jakarta-struts/web/validator/type.jsp
  
  Index: type.jsp
  ===================================================================
  <%@ page language="java" %>
  <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
  <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
  <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
  
  <html:html>
  <head>
  <title><bean:message key="typeForm.title"/></title>
  <html:base/>
  </head>
  <body bgcolor="white">
  
  <logic:messagesPresent>
     <bean:message key="errors.header"/>
     <ul>
     <html:messages id="error">
        <li><bean:write name="error"/></li>
     </html:messages>
     </ul><hr>
  </logic:messagesPresent>
  
  
  <html:form action="type">
    <html:hidden property="action"/>
  
  <table border="0">
    <tr>
      <th align="left">
        <bean:message key="typeForm.byte.displayname"/>
      </th>
      <td align="left">
        <html:text property="byte" size="15" maxlength="15"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="typeForm.short.displayname"/>
      </th>
      <td align="left">
        <html:text property="short" size="15" maxlength="15"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="typeForm.integer.displayname"/>
      </th>
      <td align="left">
        <html:text property="integer" size="15" maxlength="15"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="typeForm.long.displayname"/>
      </th>
      <td align="left">
        <html:text property="long" size="15" maxlength="15"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="typeForm.float.displayname"/>
      </th>
      <td align="left">
        <html:text property="float" size="15" maxlength="15"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="typeForm.double.displayname"/>
      </th>
      <td align="left">
        <html:text property="double" size="15" maxlength="15"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="typeForm.date.displayname"/>
      </th>
      <td align="left">
        <html:text property="date" size="15" maxlength="15"/>
      </td>
    </tr>
    <tr>
      <th align="left">
        <bean:message key="typeForm.creditCard.displayname"/>
      </th>
      <td align="left">
        <html:text property="creditCard" size="16" maxlength="16"/>
      </td>
    </tr>
    <tr>
      <td>
        <html:submit property="submit">
           <bean:message key="button.save"/>
        </html:submit>
        &nbsp;
        <html:reset>
           <bean:message key="button.reset"/>
        </html:reset>
        &nbsp;
        <html:cancel>
           <bean:message key="button.cancel"/>
        </html:cancel>    
      </td>
    </tr>
  </table>
  
  </html:form>
  
  </body>
  </html:html>
  
  
  
  1.1                  jakarta-struts/web/validator/WEB-INF/struts-config.xml
  
  Index: struts-config.xml
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1" ?>
  
  <!DOCTYPE struts-config PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
            "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd";>
  
  <!--
       This is the Struts configuration file for the example application,
       using the proposed new syntax.
  
       NOTE:  You would only flesh out the details in the "form-bean"
       declarations if you had a generator tool that used them to create
       the corresponding Java classes for you.  Otherwise, you would
       need only the "form-bean" element itself, with the corresponding
       "name" and "type" attributes.
  -->
  
  
  <struts-config>
  
    <!-- ========== Form Bean Definitions =================================== -->
    <form-beans>
  
      <!-- Registration form bean -->
      <form-bean      name="registrationForm"
                      type="org.apache.struts.webapp.validator.RegistrationForm"/>
  
      <!-- Multi-Part Registration form bean -->
      <form-bean      name="multiRegistrationForm"
                      type="org.apache.struts.webapp.validator.RegistrationForm"/>
  
      <!-- Type form bean -->
      <form-bean      name="typeForm"
                      type="org.apache.struts.webapp.validator.TypeForm"/>
  
      <!-- JavaScript Type form bean -->
      <form-bean      name="jsTypeForm"
                      type="org.apache.struts.webapp.validator.TypeForm"/>
  
      <!-- Locale form bean -->
      <form-bean      name="localeForm"
                      type="org.apache.struts.action.DynaActionForm">
        <form-property name="language" type="java.lang.String"/>
        <form-property name="country" type="java.lang.String"/>
      </form-bean>
      
    </form-beans>
  
    <!-- ========== Global Forward Definitions ============================== -->
    <global-forwards>
      <forward   name="home"             path="/index.jsp"/>
    </global-forwards>
  
    <!-- ========== Action Mapping Definitions ============================== -->
    <action-mappings>
  
      <!-- Registration Action -->
      <action    path="/registration"
                 type="org.apache.struts.webapp.validator.RegistrationAction"
                 name="registrationForm"
                 scope="request"
                 validate="true"
                 input="/registration.jsp">
         <forward name="success"              path="/index.jsp"/>
      </action>
  
      <!-- Multi-Part Registration Action -->
      <action    path="/multiRegistration"
                 type="org.apache.struts.webapp.validator.MultiRegistrationAction"
                 name="multiRegistrationForm"
                 scope="request"
                 validate="false">
         <forward name="success"             path="/index.jsp"/>
         <forward name="input1"              path="/multiRegistration1.jsp"/>
         <forward name="input2"              path="/multiRegistration2.jsp"/>
      </action>
  
      <!-- Type Action -->
      <action    path="/type"
                 type="org.apache.struts.webapp.validator.TypeAction"
                 name="typeForm"
                 scope="request"
                 validate="true"
                 input="/type.jsp">
         <forward name="success"              path="/index.jsp"/>
      </action>
  
      <!-- JavaScript Type Action -->
      <action    path="/jsType"
                 type="org.apache.struts.webapp.validator.TypeAction"
                 name="jsTypeForm"
                 scope="request"
                 validate="true"
                 input="/jsType.jsp">
         <forward name="success"              path="/index.jsp"/>
      </action>
  
      <!-- Locale Action -->
      <action    path="/locale"
                 type="org.apache.struts.webapp.validator.LocaleAction"
                 name="localeForm"
                 scope="request">
         <forward name="success"              path="/index.jsp"/>
      </action>
              
    </action-mappings>
  
    <!-- ========== Message Resources Definitions =========================== -->
  
    <message-resources
      parameter="org.apache.struts.webapp.validator.ApplicationResources"/>
  
    <!-- ========== Plug Ins Configuration ================================== -->
    
    <!-- Add multiple validator resource files by setting the pathname property -->
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
      <set-property property="pathname" value="/WEB-INF/validator-rules.xml"/>
      <set-property property="pathname" value="/WEB-INF/validation.xml"/>
    </plug-in>
        
  </struts-config>
  
  
  
  1.1                  jakarta-struts/web/validator/WEB-INF/validation.xml
  
  Index: validation.xml
  ===================================================================
  <form-validation>
     <global>
        <constant>
          <constant-name>phone</constant-name>
          <constant-value>^\(?(\d{3})\)?[-| ]?(\d{3})[-| ]?(\d{4})$</constant-value>
        </constant>                
        <constant>
          <constant-name>zip</constant-name>
          <constant-value>^\d{5}\d*$</constant-value>
        </constant>                
     </global>
     <formset>
        <constant>
          <constant-name>zip</constant-name>
          <constant-value>^\d{5}(-\d{4})?$</constant-value>
        </constant>                
        
        <form    name="registrationForm">
           <field    property="firstName"
                   depends="required,mask,minlength">
                     <arg0 key="registrationForm.firstname.displayname"/>
                     <arg1 name="minlength" key="${var:minlength}" resource="false"/>
                       <var>
                         <var-name>mask</var-name>
                         <var-value>^\w+$</var-value>
                       </var>
                       <var>
                         <var-name>minlength</var-name>
                         <var-value>5</var-value>
                       </var>
           </field>    
           <field    property="lastName"
                   depends="required,mask,maxlength">
                     <msg name="mask" key="registrationForm.lastname.maskmsg"/>
                     <arg0 key="registrationForm.lastname.displayname"/>
                     <arg1 name="maxlength" key="${var:maxlength}" resource="false"/>
                       <var>
                         <var-name>mask</var-name>
                         <var-value>^[a-zA-Z]*$</var-value>
                       </var>              
                       <var>
                         <var-name>maxlength</var-name>
                         <var-value>10</var-value>
                       </var>
           </field>
           <field    property="addr"
                   depends="required">
                     <arg0 key="registrationForm.addr.displayname"/>
           </field>
           <field    property="cityStateZip.city"
                   depends="required,mask">
                     <arg0 key="registrationForm.city.displayname"/>
                       <var>
                         <var-name>mask</var-name>
                         <var-value>^[a-zA-Z]*$</var-value>
                       </var>              
           </field>
           <field    property="cityStateZip.stateProv"
                   depends="required,mask">
                     <arg0 key="registrationForm.stateprov.displayname"/>
                       <var>
                         <var-name>mask</var-name>
                         <var-value>^[a-zA-Z]*$</var-value>
                       </var>              
           </field>
           <field    property="cityStateZip.zipPostal[1]"
                   depends="required,mask">
                     <arg0 key="registrationForm.zippostal.displayname"/>
                       <var>
                         <var-name>mask</var-name>
                         <var-value>${zip}</var-value>
                       </var>              
           </field>
           <field    property="phone"
                   depends="mask">
                     <arg0 key="registrationForm.phone.displayname"/>
                       <var>
                         <var-name>mask</var-name>
                         <var-value>${phone}</var-value>
                       </var>              
           </field>
           <field    property="email"
                   depends="required,email">
                     <arg0 key="registrationForm.email.displayname"/>
           </field>
        </form>
        <form    name="multiRegistrationForm">
           <field    property="firstName"
                   depends="required,mask"
                     page="1">
                     <arg0 key="registrationForm.firstname.displayname"/>
                       <var>
                         <var-name>mask</var-name>
                         <var-value>^\w+$</var-value>
                       </var>              
           </field>
           <field    property="lastName"
                   depends="required,mask"
                     page="1">
                     <msg name="mask" key="registrationForm.lastname.maskmsg"/>
                     <arg0 key="registrationForm.lastname.displayname"/>
                       <var>
                         <var-name>mask</var-name>
                         <var-value>^[a-zA-Z]*$</var-value>
                       </var>              
           </field>
           <field    property="addr"
                   depends="required"
                     page="1">
                     <arg0 key="registrationForm.addr.displayname"/>
           </field>
           <field    property="cityStateZip.city"
                   depends="required,mask"
                     page="1">
                     <arg0 key="registrationForm.city.displayname"/>
                       <var>
                         <var-name>mask</var-name>
                         <var-value>^[a-zA-Z]*$</var-value>
                       </var>              
           </field>
           <field    property="cityStateZip.stateProv"
                   depends="required,mask"
                     page="2">
                     <arg0 key="registrationForm.stateprov.displayname"/>
                       <var>
                         <var-name>mask</var-name>
                         <var-value>^[a-zA-Z]*$</var-value>
                       </var>              
           </field>
           <field    property="cityStateZip.zipPostal[1]"
                   depends="required,mask"
                     page="2">
                     <arg0 key="registrationForm.zippostal.displayname"/>
                       <var>
                         <var-name>mask</var-name>
                         <var-value>${zip}</var-value>
                       </var>              
           </field>
           <field    property="phone"
                   depends="mask"
                     page="2">
                     <arg0 key="registrationForm.phone.displayname"/>
                       <var>
                         <var-name>mask</var-name>
                         <var-value>${phone}</var-value>
                       </var>              
           </field>
           <field    property="email"
                   depends="required,email"
                     page="2">
                     <arg0 key="registrationForm.email.displayname"/>
           </field>
        </form>
        <form    name="typeForm">
           <field    property="byte"
                   depends="required,byte">
                     <arg0 key="typeForm.byte.displayname"/>
           </field>
           <field    property="short"
                   depends="required,short">
                     <arg0 key="typeForm.short.displayname"/>
           </field>
           <field    property="integer"
                   depends="required,integer,range">
                     <arg0 key="typeForm.integer.displayname"/>
                     <arg1 name="range" key="${var:min}" resource="false"/>
                     <arg2 name="range" key="${var:max}" resource="false"/>
                       <var>
                         <var-name>min</var-name>
                         <var-value>10</var-value>
                       </var>              
                       <var>
                         <var-name>max</var-name>
                         <var-value>20</var-value>
                       </var>              
           </field>
           <field    property="long"
                   depends="required,long">
                     <arg0 key="typeForm.long.displayname"/>
           </field>
           <field    property="float"
                   depends="required,float">
                     <arg0 key="typeForm.float.displayname"/>
           </field>
           <field    property="double"
                   depends="required,double">
                     <arg0 key="typeForm.double.displayname"/>
           </field>
           <field    property="date"
                   depends="required,date">
                     <arg0 key="typeForm.date.displayname"/>
                       <var>
                         <var-name>datePatternStrict</var-name>
                         <var-value>MM/dd/yyyy</var-value>
                       </var>              
           </field>
           <field    property="creditCard"
                   depends="required,creditCard">
                     <arg0 key="typeForm.creditCard.displayname"/>
           </field>
        </form>
        <form    name="jsTypeForm">
           <field    property="byte"
                   depends="required,byte">
                     <arg0 key="typeForm.byte.displayname"/>
           </field>
           <field    property="short"
                   depends="required,short">
                     <arg0 key="typeForm.short.displayname"/>
           </field>
           <field    property="integer"
                   depends="required,integer,range">
                     <arg0 key="typeForm.integer.displayname"/>
                     <arg1 name="range" key="${var:min}" resource="false"/>
                     <arg2 name="range" key="${var:max}" resource="false"/>
                       <var>
                         <var-name>min</var-name>
                         <var-value>10</var-value>
                       </var>              
                       <var>
                         <var-name>max</var-name>
                         <var-value>20</var-value>
                       </var>              
           </field>
           <field    property="float"
                   depends="required,float">
                     <arg0 key="typeForm.float.displayname"/>
           </field>
           <field    property="date"
                   depends="required,date">
                     <arg0 key="typeForm.date.displayname"/>
                       <var>
                         <var-name>datePatternStrict</var-name>
                         <var-value>MM/dd/yyyy</var-value>
                       </var>              
           </field>
           <field    property="creditCard"
                   depends="required,creditCard">
                     <arg0 key="typeForm.creditCard.displayname"/>
           </field>
        </form>
     </formset>
     <formset language="fr">
        <form    name="registrationForm">
           <field    property="lastName"
                   depends="required,mask">
                     <msg name="mask" key="registrationForm.lastname.maskmsg"/>
                     <arg0 key="registrationForm.lastname.displayname"/>
                       <var>
                         <var-name>mask</var-name>
                         <var-value>^\w+$</var-value>
                       </var>  
           </field>
           <field    property="cityStateZip.stateProv">
                     <arg0 key="registrationForm.stateprov.displayname"/>
           </field>
           <field    property="phone">
                     <arg0 key="registrationForm.phone.displayname"/>
           </field>
        </form>
        <form    name="multiRegistrationForm">
           <field    property="firstName"
                   depends="required,mask"
                     page="1">
                     <arg0 key="registrationForm.firstname.displayname"/>
                       <var>
                         <var-name>mask</var-name>
                         <var-value>^\w+$</var-value>
                       </var>  
           </field>
           <field    property="lastName"
                   depends="required,mask"
                     page="1">
                       <msg name="mask" key="registrationForm.lastname.maskmsg"/>
                     <arg0 key="registrationForm.lastname.displayname"/>
                       <var>
                         <var-name>mask</var-name>
                         <var-value>^\w+$</var-value>
                       </var>  
           </field>
           <field    property="addr"
                   depends="required"
                     page="1">
                     <arg0 key="registrationForm.addr.displayname"/>
           </field>
           <field    property="cityStateZip.city"
                   depends="required,mask"
                     page="1">
                     <arg0 key="registrationForm.city.displayname"/>
                       <var>
                         <var-name>mask</var-name>
                         <var-value>^[a-zA-Z]*$</var-value>
                       </var>  
           </field>
           <field    property="cityStateZip.stateProv"
                     page="2">
                     <arg0 key="registrationForm.stateprov.displayname"/>
           </field>
           <field    property="cityStateZip.zipPostal[1]"
                   depends="required,mask"
                     page="2">
                     <arg0 key="registrationForm.zippostal.displayname"/>
                       <var>
                         <var-name>mask</var-name>
                         <var-value>${zip}</var-value>
                       </var>  
           </field>
           <field    property="phone"
                     page="2">
                     <arg0 key="registrationForm.phone.displayname"/>
           </field>
           <field    property="email"
                   depends="required,email"
                     page="2">
                     <arg0 key="registrationForm.email.displayname"/>
           </field>
        </form>
        <form    name="typeForm">
           <field    property="integer"
                   depends="required,integer,range">
                     <arg0 key="typeForm.integer.displayname"/>
                     <arg1 name="range" key="${var:min}" resource="false"/>
                     <arg2 name="range" key="${var:max}" resource="false"/>
                       <var>
                         <var-name>min</var-name>
                         <var-value>50</var-value>
                       </var>              
                       <var>
                         <var-name>max</var-name>
                         <var-value>60</var-value>
                       </var>              
           </field>
           <field    property="date"
                   depends="required,date">
                     <arg0 key="typeForm.date.displayname"/>
                       <var>
                         <var-name>datePatternStrict</var-name>
                         <var-value>dd.MM.yyyy</var-value>
                       </var>              
           </field>
        </form>
        <form    name="jsTypeForm">
           <field    property="integer"
                   depends="required,integer,range">
                     <arg0 key="typeForm.integer.displayname"/>
                     <arg1 name="range" key="${var:min}" resource="false"/>
                     <arg2 name="range" key="${var:max}" resource="false"/>
                       <var>
                         <var-name>min</var-name>
                         <var-value>50</var-value>
                       </var>              
                       <var>
                         <var-name>max</var-name>
                         <var-value>60</var-value>
                       </var>              
           </field>
           <field    property="date"
                   depends="required,date">
                     <arg0 key="typeForm.date.displayname"/>
                       <var>
                         <var-name>datePatternStrict</var-name>
                         <var-value>dd.MM.yyyy</var-value>
                       </var>              
           </field>
        </form>
     </formset>   
     <formset language="fr" country="CA">
        <form    name="jsTypeForm">
           <field    property="integer"
                   depends="required,integer,range">
                     <arg0 key="typeForm.integer.displayname"/>
                     <arg1 name="range" key="${var:min}" resource="false"/>
                     <arg2 name="range" key="${var:max}" resource="false"/>
                       <var>
                         <var-name>min</var-name>
                         <var-value>100</var-value>
                       </var>              
                       <var>
                         <var-name>max</var-name>
                         <var-value>200</var-value>
                       </var>              
           </field>
           <field    property="date"
                   depends="required,date">
                     <arg0 key="typeForm.date.displayname"/>
                       <var>
                         <var-name>datePatternStrict</var-name>
                         <var-value>dd-MM-yyyy</var-value>
                       </var>              
           </field>
        </form>
     </formset>   
  </form-validation>
  
  
  
  1.1                  jakarta-struts/web/validator/WEB-INF/web.xml
  
  Index: web.xml
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
    "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd";>
  
  <web-app>
  
    <!-- Action Servlet Configuration -->
    <servlet>
      <servlet-name>action</servlet-name>
      <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
      <init-param>
        <param-name>config</param-name>
        <param-value>/WEB-INF/struts-config.xml</param-value>
      </init-param>
      <init-param>
        <param-name>debug</param-name>
        <param-value>3</param-value>
      </init-param>
      <init-param>
        <param-name>detail</param-name>
        <param-value>3</param-value>
      </init-param>
      <load-on-startup>2</load-on-startup>
    </servlet>
  
    <!-- Action Servlet Mapping -->
    <servlet-mapping>
      <servlet-name>action</servlet-name>
      <url-pattern>*.do</url-pattern>
    </servlet-mapping>
  
    <!-- The Welcome File List -->
    <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
  
    <!-- Struts Tag Library Descriptors -->
    <taglib>
      <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
      <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
    </taglib>
  
    <taglib>
      <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
      <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
    </taglib>
  
    <taglib>
      <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
      <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
    </taglib>
  
    <!-- Template Tag Library Descriptor -->
    <taglib>
      <taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>
      <taglib-location>/WEB-INF/struts-template.tld</taglib-location>
    </taglib>
  
  </web-app>
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to