With the new version of Struts, we are getting a NullPointerException whenever 
custom rules are being run because they are expecting a parameter list of:

Object Bean,
ValidatorAction va,
Field field,
ActionErrors errors,
org.apache.commons.validator.Validator validator,
HttpServletRequest request

and the ActionErrors.errors object is being sent in as null.  This did not 
happen in struts 1.1

Has the custom error handling for Struts changed in the new version?

Here are some of our rules:
=========================

      <validator name="dateIsPast"
                 classname="com.wf.bd.ice.rules.validation.ICEFieldChecks"
                 method="validateDateIsPast"
                 methodParams="java.lang.Object,
                               org.apache.commons.validator.ValidatorAction,
                               org.apache.commons.validator.Field,
                               org.apache.struts.action.ActionErrors,
                               org.apache.commons.validator.Validator,
                               javax.servlet.http.HttpServletRequest"
                 msg="errors.dateIsPast">
      </validator>


And here is the Java Class:
======================
    public static boolean validateDateIsPast(  
        Object bean, ValidatorAction va, Field field, ActionErrors errors,  
        org.apache.commons.validator.Validator validator,  
        HttpServletRequest request  
    ) {  
        Object form =  
            validator.getResource(  
                org.apache.commons.validator.Validator.BEAN_KEY  
            );  
        String monthVal = null;  
  
        if(isString(bean)) {  
            monthVal = (String) bean;  
        } else {  
            monthVal =  
                ValidatorUtil.getValueAsString(bean, field.getProperty());  
        }  
  
        String yearVal = null;  
  
        if(!GenericValidator.isBlankOrNull(field.getVarValue("year"))) {  
            String yearProp = field.getVarValue("year");  
            yearVal = ValidatorUtil.getValueAsString(form, yearProp);  
        }  
  
        if((monthVal == null) || (yearVal == null)) {  
            return false;  
        }  
  
        int month;  
        int year;  
  
        try {  
            month = Integer.parseInt(monthVal);  
            year = Integer.parseInt(yearVal);  
        } catch(NumberFormatException nfe) {  
            return false;  
        }  
  
        // set the month-year date with the 1st of the month  
        Calendar then = new GregorianCalendar(year, month - 1, 1);  
        Calendar now = new GregorianCalendar();  
  
        if(then.after((Calendar) now)) {  
            errors.add(  
                field.getKey(), Resources.getActionError(request, va, field)  
            );  
  
            return false;  
        }  
  
        return true;  
    }  

--------------------
Mick Knutson
Wells Fargo Business Direct Information Systems
(415) 222-1020

"This message may contain confidential and/or privileged information. If you 
are not the addressee or authorized to receive this for the addressee, you must 
not use, copy, disclose, or take any action based on this message or any 
information herein. If you have received this message in error, please advise 
the sender immediately by reply e-mail and delete this message. Thank you for 
your cooperation."
--------------------



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

Reply via email to