Hi!

Im using Struts 1.1 RC1 and I want to validate user input. I have a password field 
that should have at least 6 characters. Therefore, I use the following validator-rule 
in validator-rules.xml:

<form-validation>
  <global>
    <validator name="minlength"
            classname="org.apache.struts.validator.FieldChecks"
               method="validateMinLength"
         methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
              depends="required"
                  msg="errors.minlength">

         <javascript><![CDATA[
            function validateMinLength(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oMinLength = new minlength();
                for (x in oMinLength) {
                    if (form[oMinLength[x][0]].type == 'text' ||
                        form[oMinLength[x][0]].type == 'textarea') {
                        var iMin = parseInt(oMinLength[x][2]("minlength"));
                        if (form[oMinLength[x][0]].value.length < iMin) {
                            if (i == 0) {
                                focusField = form[oMinLength[x][0]];
                            }
                            fields[i++] = oMinLength[x][1];
                            bValid = false;
                        }
                    }
                }
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return bValid;
            }]]>
         </javascript>
      </validator>
      <!-- ... -->
  </global>
</form-validation>

The validator is used in validation.xml like this:

<form-validation>
  <formset>
    <form name="logonForm">
      <!-- ... -->
      <field property="password" depends="required,minlength">
        <arg0 key="prompt.password"/>
        <arg1 name="minlength" key="${var:minlength}" resource="false"/>
          <var>
            <var-name>minlength</var-name>
            <var-value>6</var-value>
          </var>
       </field>
    </form>
  </formset>
</form-validation>

My logon.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">
  <body>
    <html:form action="/logon" focus="username" onsubmit="return 
validateLogonForm(this);">
      <table border="0" width="100%">
        <!-- ... -->
        <tr>
          <th align="right" width="50%">
            <bean:message key="prompt.password"/>:
          </th>
          <td align="left" width="50%">
             <html:password property="password" size="16" maxlength="18" 
redisplay="false"/>
          </td>
        </tr>
      </table>
      <!-- Submit and cancel button -->
    </html:form>
    <html:javascript formName="logonForm" dynamicJavascript="true" 
staticJavascript="true"  />
  </body>
</html:html>

Last but not least, the entry in the struts-config.xml:

<plug-in className="org.apache.struts.validator.ValidatorPlugIn" >
  <set-property property="pathnames"
                         value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>

My problem is that there is only a server-side validation for the minlength-property. 
If nothing is entered in the password-field, Javascript-validation (required) works 
fine (i.e the validation is done on client-side). What am I doing wrong?
Thanks for help!

Stefan
______________________________________________________________________________
Mit der Auslands-SMS von WEB.DE FreeMail erreichen Sie Ihre Freunde auf
der ganzen Welt - http://freemail.web.de/features/?mc=021171


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

Reply via email to