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]