浏览 8291 次
锁定老帖子 主题:关于struts的validate问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-01-10
基础的东东,但是实验了多少天都没有成功,还是得求 教大家,下面是非常简单的测试文件,还是请各位指点一句半句,感激不尽。:) struts文件. <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config> <!-- ============ Data Source =================================== --> <!-- ========== Form Bean Definitions =================================== --> <form-beans> <form-bean name="testForm" type="org.apache.struts.validator.DynaValidatorForm"> <form-property name="name" type="java.lang.String"/> </form-bean> </form-beans> <!-- ========== Global Forward Definitions ============================== --> <global-forwards> </global-forwards> <!-- ========== Action Mapping Definitions ============================== --> <action-mappings> <action path="/test" type="TestAction" name="testForm" attribute="testForm" scope="request" validate="true" input="/test.jsp"> <forward name="success" path="/test.jsp"/> </action> </action-mappings> <message-resources parameter="test.ApplicationResources"/> <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/> </plug-in> </struts-config> validation文件. <form-validation> <global> <constant> <constant-name>phone</constant-name> <constant-value>^\d{8}\d*$</constant-value> </constant> <constant> <constant-name>zip</constant-name> <constant-value>^\d{6}\d*$</constant-value> </constant> <constant> <constant-name>mark</constant-name> <constant-value>\d+</constant-value> </constant> <constant> <constant-name>score</constant-name> <constant-value>\d+</constant-value> </constant> <constant> <constant-name>email</constant-name> <constant-value>\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*</constant-value> </constant> </global> <formset> <constant> <constant-name>zip</constant-name> <constant-value>^\d{6}\d*$</constant-value> </constant> <form name="testForm"> <field property="name" depends="required"> <arg0 key="name"/> </field> </form> </formset> </form-validation> jsp代码: ..... <html:form action="/test.do"> <html:errors/> <html:text property="name"/> <html:submit/> </html:form> ..... 提交时的debug: variables中的错误提示: ValidatorAction: required java.lang.NoSuchMethodException: 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) 最终的错误提示: 2006-1-9 22:12:58 org.apache.struts.validator.DynaValidatorForm validate 严重: 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.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) at org.apache.commons.validator.ValidatorAction.loadValidationMethod(ValidatorAction.java:587) at org.apache.commons.validator.ValidatorAction.executeValidationMethod(ValidatorAction.java:517) at org.apache.commons.validator.Field.validateForRule(Field.java:637) at org.apache.commons.validator.Field.validate(Field.java:716) at org.apache.commons.validator.Form.validate(Form.java:198) at org.apache.commons.validator.Validator.validate(Validator.java:284) at org.apache.struts.validator.DynaValidatorForm.validate(DynaValidatorForm.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:1158) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:257) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:195) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) at java.lang.Thread.run(Thread.java:534) 同时我还试过不用在struts_config中配置DynaValidatorForm,而是手写TestForm extends ValidationForm.但是这样提交之后,那个 <form name="testForm"> <field property="name" depends="required"> <arg0 key="name"/> </field> </form>好像不起做用,倒也没有任何错误提示。。郁闷... 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-01-10
没看明白,不是直接extends ActionForm以后重写validate不就可以了吗?
|
|
返回顶楼 | |
发表时间:2006-01-10
lszone 写道 没看明白,不是直接extends ActionForm以后重写validate不就可以了吗?
但是我不想写rest,validate方法,而想用validate.xml中定义的去验证,但是从没有实验成功 |
|
返回顶楼 | |
发表时间:2006-01-13
哈,这个问题是你的struts的版本和common-validator的版本不一致,
我也碰到过。 我那次从struts1.2.4升级到struts1.2.8的时候就出现这个问题的 我现在还是用的struts1.2.4和common-validator1.1.3,这个没有问题 |
|
返回顶楼 | |
发表时间:2006-01-13
welllove53 写道 哈,这个问题是你的struts的版本和common-validator的版本不一致,
我也碰到过。 我那次从struts1.2.4升级到struts1.2.8的时候就出现这个问题的 我现在还是用的struts1.2.4和common-validator1.1.3,这个没有问题 谢谢您的指点,我晚上回去试试,可能真是您说的这样》:) |
|
返回顶楼 | |
发表时间:2006-01-13
最好拷贝发行包中的struts-example中所带的validator-rules.xml和validation.xml
然后在此基础上改,免得出错 |
|
返回顶楼 | |
发表时间:2006-01-14
感谢各位回复,真是版本的问题,我原先用的是struts1.2.4可能和那个版本的validator不能一起使用,现在用1.1.3的validator就好了:),问题终于解决了,一身轻松。
|
|
返回顶楼 | |
发表时间:2006-01-15
java.lang.NoSuchMethodException
这个一看就是包有问题了 |
|
返回顶楼 | |