你是要validator 验证 还是直接在validate() 方法 代码验证

解决方案 »

  1.   

    在你的actionForm里有个validate方法,在里面将两个字段比较一下就可以了,如果不相同的话就返回一个ActionErrors对象(针对1.1,1.2里面好像使用ActionMessage代替了),同时在struts-config.xml里将validate设置为true
      

  2.   

    出现这样的错误:
    严重: com.ValidationUtil
    org.apache.commons.validator.ValidatorException: com.ValidationUtil
    at org.apache.commons.validator.ValidatorAction.loadValidationClass(ValidatorAction.java:646)
    at org.apache.commons.validator.ValidatorAction.executeValidationMethod(ValidatorAction.java:555)
    at org.apache.commons.validator.Field.validateForRule(Field.java:811)
    at org.apache.commons.validator.Field.validate(Field.java:890)
    at org.apache.commons.validator.Form.validate(Form.java:174)
    at org.apache.commons.validator.Validator.validate(Validator.java:367)
    at org.apache.struts.validator.ValidatorForm.validate(ValidatorForm.java:112)
    at org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:921)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:206)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at com.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:23)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)
      

  3.   

    package com;import org.apache.commons.validator.ValidatorAction;
    import org.apache.commons.validator.Field;
    import org.apache.struts.action.ActionErrors;
    import javax.servlet.http.HttpServletRequest;
    import org.apache.commons.validator.ValidatorUtil;
    import org.apache.commons.validator.GenericValidator;
    import org.apache.struts.validator.Resources;public class ValidationUtil {
        public ValidationUtil() {
        }    public static boolean validateTwoFields(Object bean, ValidatorAction va,
                                                Field field, ActionErrors errors,
                                                HttpServletRequest request) {
            String value =
                    ValidatorUtil.getValueAsString(bean, field.getProperty());
            String sProperty2 = field.getVarValue("secondProperty");
            String value2 = ValidatorUtil.getValueAsString(bean, sProperty2);        if (!GenericValidator.isBlankOrNull(value)) {
                try {
                    if (!value.equals(value2)) {
                        errors.add(field.getKey(),
                                   Resources.getActionError(request, va, field));                    return false;
                    }
                } catch (Exception e) {
                    errors.add(field.getKey(),
                               Resources.getActionError(request, va, field));                return false;
                }
            }        return true;
        }}
      

  4.   

    validator-rules.xml里增加
    <validator name="includeJavaScriptUtilities" classname="" method="" methodParams="" depends="" msg="" jsFunction="org.apache.commons.validator.javascript.validateUtilities"/>
        <validator name="twofields" classname="com.ValidationUtil" method="validateTwoFields" 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.twofields">
          <javascript>
            <![CDATA[ function validateTwoFields(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oTwoFields = new twofields();
                for (x in oTwoFields) {
                    var field = form[oTwoFields[x][0]];
                    var secondField = form[oTwoFields[x][2]("secondProperty")];                if (field.type == 'text' ||
                        field.type == 'textarea' ||
                        field.type == 'select-one' ||
                        field.type == 'radio' ||
                        field.type == 'password') {                    var value;
                        var secondValue;
                        // get field's value
                        if (field.type == "select-one") {
                            var si = field.selectedIndex;
                            value = field.options[si].value;
                            secondValue = secondField.options[si].value;
                        } else {
                            value = field.value;
                            secondValue = secondField.value;
                        }                    if (value != secondValue) {                        if (i == 0) {
                                focusField = field;
                            }
                            fields[i++] = oTwoFields[x][1];
                            bValid = false;
                        }
                    }
                }            if (fields.length > 0) {
                    focusField.focus();
                    alert(fields.join('\n'));
                }            return bValid;
            }]]>
                </javascript>
        </validator>
      

  5.   

    validation.xml增加:
    <var>
            <var-name>secondProperty</var-name>
            <var-value>conpwd</var-value>
    </var>