当我在 Struts 中进行表单验证时,我得到了 org.apache.commons.validator.ValidatorException

问题描述:

When I am Doing Form validations In Struts I am Getting Exception:    

org.apache.commons.validator.ValidatorException:没有这样的验证方法:
org.apache.struts.validator.FieldChecks.validateRequired
(java.lang.Object, org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors,javax.servlet.http.HttpServletRequest)在 org.apache.commons.validator.ValidatorAction.loadValidationMethod
(ValidatorAction.java:604)在 org.apache.commons.validator.ValidatorAction.executeValidationMethod(ValidatorAction.java:532)在 org.apache.commons.validator.Field.validateForRule(Field.java:796)在 org.apache.commons.validator.Field.validate(Field.java:876)在 org.apache.commons.validator.Form.validate(Form.java:288)在 org.apache.commons.validator.Validator.validate(Validator.java:351)在 org.apache.struts.validator.ValidatorForm.validate(ValidatorForm.java:110)在 org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:927)在 org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:204)在 org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)在 org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)在 javax.servlet.http.HttpServlet.service(HttpServlet.java:647)在 javax.servlet.http.HttpServlet.service(HttpServlet.java:728)在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)在 org.apache.catalina.authenticator.AuthenticatorBase.invoke
(AuthenticatorBase.java:472)在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)在 org.apache.catalina.core.StandardEngineValve.invoke(标准引擎阀.java:118)在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process
(AbstractProtocol.java:589)在 org.apache.tomcat.util.net.JioEndpoint$SocketProcessor.run(JioEndpoint.java:310)在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)在 java.util.concurrent.ThreadPoolExecutor$Worker.run(未知来源)在 java.lang.Thread.run(Unknown Source)

org.apache.commons.validator.ValidatorException: No such validation method:
org.apache.struts.validator.FieldChecks.validateRequired
(java.lang.Object, org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest) at org.apache.commons.validator.ValidatorAction.loadValidationMethod
(ValidatorAction.java:604) at org.apache.commons.validator.ValidatorAction.executeValidationMethod (ValidatorAction.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:110) at org.apache.struts.action.RequestProcessor.processValidate (RequestProcessor.java:927) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:204) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke
(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) at org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process (AbstractHttp11Processor.java:1004) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process
(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run (JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

我在尝试提交表单时也遇到同样的错误.我发现这个错误可能是由于一个版本的 struts 有一个validation-rules.xml 文件,而另一个版本的struts 有一个struts.jar 文件.检查您的安装并确保这两个文件来自同一个下载.还要检查 WEB-INF/lib 目录中的所有其他 jar 文件是否来自同一个下载.

I am also getting the same error while I try to submit a form. I found that this error could be the result of having a validation-rules.xml file from one version of struts, but a struts.jar file from another version of struts. Check your installation and make absolutely sure that both of these files come from the same download. Also check that all other jar files in the WEB-INF/lib directory come from the same download.