I just upgraded from Struts 1.2.8 to 1.3.8 and my custom Validators aren't working. The standard included validators all work fine. I have commons-validator-1.3.1.jar in my .war file web-inf/lib. I deleted the stand alone validator-rules.xml file from same.
Any assistance would be appreciated. This is in Validation.xml <!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN" "http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd"> >....> <validator name="achRouting" classname="cc.nisc.css.web.ACHCheck" method="validateACHRouting" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest" depends="" msg="errors.achRouting"/> This is my custom validator class: package cc.nisc.css.web; import org.apache.commons.validator.Field; import org.apache.commons.validator.GenericValidator; import org.apache.commons.validator.ValidatorAction; import org.apache.commons.validator.util.ValidatorUtils; import org.apache.struts.action.ActionMessages; import org.apache.struts.validator.Resources; import javax.servlet.http.HttpServletRequest; import java.io.Serializable; /** * @author Greg * @version $Id: ACHCheck.java,v 1.1, 2006-01-17 17:46:15Z, Greg$ */ public class ACHCheck implements Serializable { public static boolean validateACHRouting(Object bean, ValidatorAction va, Field field, ActionMessages errors, HttpServletRequest request) { String value; if (isString(bean)) { value = (String) bean; } else { value = ValidatorUtils.getValueAsString(bean, field.getProperty()); } if (GenericValidator.isBlankOrNull(value)) { return true; } if (value.length() != 9) { errors.add(field.getKey(), Resources.getActionMessage(request, va, field)); return false; } int n = 0; for (int i = 0; i < value.length(); i += 3) { n += CharToInt(value.charAt(i)) * 3 + CharToInt(value.charAt(i + 1)) * 7 + CharToInt(value.charAt(i + 2)); } // If the resulting sum is an even multiple of ten (but not zero), // the aba routing number is good. if (n != 0 && n % 10 == 0) return true; else { errors.add(field.getKey(), Resources.getActionMessage(request, va, field)); return false; } } public static int CharToInt(char chr) { return Integer.parseInt(CharToString(chr)); } public static String CharToString(char chr) { return String.valueOf(chr); } private static Class stringClass = new String().getClass(); private static boolean isString(Object o) { if (o == null) return true; return (stringClass.isInstance(o)); } } This is my plug-in definition in struts-config.xml : <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/org/apache/struts/validator/validator-rules.xml, /WEB-INF/validation.xml"/> </plug-in> I'm getting the following stack trace: 2008-04-25 15:45:48,580 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/css].[ action]] Servlet.service() for servlet action threw exception java.lang.NoClassDefFoundError: org/apache/commons/validator/ValidatorAction at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2427) at java.lang.Class.getMethod0(Class.java:2670) at java.lang.Class.getMethod(Class.java:1603) at org.apache.commons.validator.ValidatorAction.loadValidationMethod(Valida torAction.java:600) at org.apache.commons.validator.ValidatorAction.executeValidationMethod(Val idatorAction.java:532) at org.apache.commons.validator.Field.validateForRule(Field.java:796) at org.apache.commons.validator.Field.validate(Field.java:876) at org.apache.commons.validator.Form.validate(Form.java:288) at org.apache.commons.validator.Validator.validate(Validator.java:351) at org.apache.struts.validator.ValidatorForm.validate(ValidatorForm.java:11 6) at org.apache.struts.chain.commands.servlet.ValidateActionForm.validate(Val idateActionForm.java:58) at org.apache.struts.chain.commands.AbstractValidateActionForm.execute(Abst ractValidateActionForm.java:120) at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommand Base.java:51) at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.jav a:304) at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableReq uestProcessor.java:283) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:206) at cc.nisc.css.web.filter.ClearCacheFilter.doFilter(ClearCacheFilter.java:7 0) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:206) at cc.nisc.css.web.filter.CssSecurityFilter.doFilter(CssSecurityFilter.java :421) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:206) at cc.nisc.css.web.filter.CookieFilter.doFilter(CookieFilter.java:37) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:206) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilte r.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv e.java:230) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv e.java:175) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAs sociationValve.java:179) at org.jboss.web.tomcat.service.session.ClusteredSessionValve.invoke(Cluste redSessionValve.java:87) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.j ava:84) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java :127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java :102) at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConn ectionValve.java:157) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562 ) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve. java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:2 62) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:84 4) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process( Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) at java.lang.Thread.run(Thread.java:619) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]