拿我把我的原码贴出来吧
struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
  <form-beans>
    <form-bean name="logonForm" type="org.apache.struts.validator.DynaValidatorForm">
      <form-property name="username" type="java.lang.String" />
      <form-property name="password" type="java.lang.String" />
    </form-bean>
  </form-beans>
  <global-forwards>
    <forward name="welcome" path="/Welcome.do" />
  </global-forwards>
  <action-mappings>
    <action input="/pages/error.jsp" name="logonForm" parameter="/pages/Welcome.jsp" path="/Welcome" type="org.apache.struts.actions.ForwardAction" />
    <action input="/pages/error.jsp" name="logonForm" path="/submit" type="action.SubmitAction" validate="true">
      <forward name="norm" path="/pages/Welcome.jsp" />
      <forward name="next" path="/pages/OK.jsp" />
      <forward name="err" path="/pages/Welcome.jsp" />
    </action>
  </action-mappings>
  <controller processorClass="org.apache.struts.action.RequestProcessor" />
  <message-resources parameter="resources.application" />
  <plug-in className="org.apache.struts.tiles.TilesPlugin">
    <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
    <set-property property="moduleAware" value="true" />
    <set-property property="definitions-parser-validate" value="true" />
  </plug-in>
  <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
  </plug-in>
</struts-config>
validation.xml
<?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPE form-validation PUBLIC
          "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
          "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd"><form-validation><!--
     This is a blank Validator form file with a commented examples.
-->    <global>        <!-- An example global constant
        <constant>
            <constant-name>postalCode</constant-name>
            <constant-value>^\d{5}\d*$</constant-value>
        </constant>
        end example-->    </global>    <formset>
        <form name="/logonForm">
            <field
                property="username"
                depends="required">
        
                    <arg0 key="errors.logon"/>
             </field>
         <field
            property="password"
            depends="required,mask">
            <arg0 key="errors.logon"/>
            <var>
                <var-name>mask</var-name>
                <var-value>^[0-9a-zA-Z]*$</var-value>
            </var>
         </field>
        </form>    </formset>    <!-- An example formset for another locale
    <formset language="fr">        <constant>
            <constant-name>postalCode</constant-name>
            <constant-value>^[0-9a-zA-Z]*$</constant-value>
        </constant>   </formset>
   --></form-validation>web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!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>
  <display-name>Struts Blank Application</display-name>
  <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>2</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <taglib>
    <taglib-uri>/tags/struts-bean</taglib-uri>
    <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
  </taglib>
  <taglib>
    <taglib-uri>/tags/struts-html</taglib-uri>
    <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
  </taglib>
  <taglib>
    <taglib-uri>/tags/struts-logic</taglib-uri>
    <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
  </taglib>
  <taglib>
    <taglib-uri>/tags/struts-nested</taglib-uri>
    <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
  </taglib>
  <taglib>
    <taglib-uri>/tags/struts-tiles</taglib-uri>
    <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
  </taglib>
  <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>
  <taglib>
    <taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-template.tld</taglib-location>
  </taglib>
  <taglib>
    <taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
  </taglib>
  <taglib>
    <taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
  </taglib>
</web-app>

解决方案 »

  1.   

    index.jsp
    <%@ page contentType="text/html; charset=GB2312" %>
    <%@ taglib uri="/tags/struts-logic" prefix="logic"%>
    <logic:redirect forward="welcome"/>
    welcome.jsp
    <%@ page contentType="text/html; charset=GB2312" %>
    <%@ taglib uri="/tags/struts-bean" prefix="bean" %>
    <%@ taglib uri="/tags/struts-html" prefix="html" %>
    <%@ taglib uri="/tags/struts-logic" prefix="logic" %><html:html locale="true"><head>
    <title><bean:message key="welcome.title"/></title>
    <html:base/>
    </head><body bgcolor="white">
    <html:form action="/submit.do" focus="username" onsubmit="return validateLogonForm(this)">
    <input name="KEY_ACTION_TYPE" type="hidden" value="submit">
    <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>
    <h3>
      <bean:message key="welcome.message"/>
    </h3>
    <p>
      <font color="red">
         <logic:messagesPresent>
       <html:messages id="error">
          <li><bean:write name="error"/></li>
       </html:messages>
    </logic:messagesPresent>
      </font>
    </p>
    <p><bean:message key="welcome.username"/> <html:text name="logonForm" property="username"/></p>
    <p><bean:message key="welcome.password"/> <html:password name="logonForm" property="password"></html:password></p>
    <html:submit value="OK">
    </html:submit>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <html:reset value="Cancel">
    </html:reset>
    <html:javascript  formName="loginForm"  dynamicJavascript="false"  staticJavascript="true"/>  
    </html:form></body>
    </html:html>
      

  2.   

    application.properties
    # -- standard errors --
    errors.header=<UL>
    errors.prefix=<LI>
    errors.suffix=</LI>
    errors.footer=</UL>
    # -- validator --
    errors.invalid={0} is invalid.
    errors.maxlength={0} can not be greater than {1} characters.
    errors.minlength={0} can not be less than {1} characters.
    errors.range={0} is not in the range {1} through {2}.
    errors.required={0} is required.
    errors.byte={0} must be an byte.
    errors.date={0} is not a date.
    errors.double={0} must be an double.
    errors.float={0} must be an float.
    errors.integer={0} must be an integer.
    errors.long={0} must be an long.
    errors.short={0} must be an short.
    errors.creditcard={0} is not a valid credit card number.
    errors.email={0} is an invalid e-mail address.
    # -- other --
    errors.cancel=Operation cancelled.
    errors.detail={0}
    errors.general=The process did not complete. Details should follow.
    errors.token=Request could not be completed. Operation is not in sequence.
    errors.logon=is error.
    logonForm.username=user
    logonForm.password=password
    # -- welcome --
    welcome.title=Struts Blank Application
    welcome.username=USERNAME:
    welcome.password=PASSWORD:
    welcome.message=HELLO
      

  3.   

    ......
    <action input="/pages/error.jsp" name="logonForm" parameter="/pages/Welcome.jsp" path="/Welcome" type="org.apache.struts.actions.ForwardAction" 这里加上validate="true"看看/>
        <action input="/pages/error.jsp" name="logonForm" path="/submit" type="action.SubmitAction" validate="true">
    ......
      

  4.   

    TO WINDINN:你说的我试了,不好用,我的页面还有以下信息:
    function validateFloatRange(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); oRange = new floatRange(); for (x in oRange) { var field = form[oRange[x][0]]; if ((field.type == 'text' || field.type == 'textarea') && (field.value.length > 0)) { var fMin = parseFloat(oRange[x][2]("min")); var fMax = parseFloat(oRange[x][2]("max")); var fValue = parseFloat(field.value); if (!(fValue >= fMin && fValue 0) { focusField.focus(); alert(fields.join('\n')); } return isValid; } function validateByte(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oByte = new ByteValidations(); for (x in oByte) { var field = form[oByte[x][0]]; if (field.type == 'text' || field.type == 'textarea' || field.type == 'select-one' || field.type == 'radio') { var value = ''; // get field's value if (field.type == "select-one") { var si = field.selectedIndex; if (si >= 0) { value = field.options[si].value; } } else { value = field.value; } if (value.length > 0) { if (!isAllDigits(value)) { bValid = false; if (i == 0) { focusField = field; } fields[i++] = oByte[x][1]; } else { var iValue = parseInt(value); if (isNaN(iValue) || !(iValue >= -128 && iValue 0) { focusField.focus(); alert(fields.join('\n')); } return bValid; } function validateMaxLength(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); oMaxLength = new maxlength(); for (x in oMaxLength) { var field = form[