struts验证框架初学者问题

crazyguo007 2005-09-29 05:18:55
我在Exadel Studio的Struts环境中做了一个简单的用户登录的Jsp页面,配置了一个与之对应的动态表单,想用struts自动验证框架验证用户名是否为空。
login.jsp代码如下:
<%@ page contentType="text/html;charset=GBK" language="java" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<html:html>
<html:javascript formName="LoginForm" />
<html:form action="LoginAction.do" method="post" onsubmit="return validateLoginForm(this)">
用户名:<html:text property="name" /> <p>
密码:<html:password property="pwd" /> <p>
<html:submit value="登陆"/>
</html:form>
<p>
<html:link page="/pages/regist.jsp">新用户注册</html:link>
</html:html>

struts-config.xml中动态表单的配置如下:
<form-bean dynamic="true" name="LoginForm" type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="name" type="java.lang.String"/>
<form-property name="pwd" type="java.lang.String"/>

validation.xml中的配置如下:
<formset>
<form name="LoginForm">
<field depends="required" property="name">
<msg key="msg.name.required" name="required"/>
</field>
</form>
</formset>

可是运行过程中老是弹出脚本错误'required'未定义,我用脚本调试器调试,发现错误在validator-rules.xml中的如下函数中:
<javascript><![CDATA[
function validateRequired(form) {
var bValid = true;
var focusField = null;
var i = 0;
var fields = new Array();
oRequired = new required(); //错误在这一行
........
}


请各位高手指点一下,问题可能出在哪儿?我想肯定不是validator-rules.xml中有错误,那时默认的验证规则中的javascript代码,那问题最可能在哪儿?
谢谢指点!
...全文
135 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
crazyguo007 2005-09-30
  • 打赏
  • 举报
回复
非常感谢各位对我的帮助,我找到问题所在了,canghaisha提醒的对,是我的validator-rules.xml文件的版本不对,在Struts1.2中我却用了原来struts1.1版本的validator-rules.xml文件,希望大家以后不要犯我这种低级错误。
crazyguo007 2005-09-30
  • 打赏
  • 举报
回复
这个也是在客户端验证的
chrisshang 2005-09-30
  • 打赏
  • 举报
回复
我很奇怪,为什么表单的数据一定要放在服务端进行验证呢,用JS在客户端不就可以了,这样还可以分担服务器的压力,虽然这样遵守MVC的架构,但我不喜欢这么用
unrealwalker 2005-09-29
  • 打赏
  • 举报
回复
javascript的错?
把<html:javascript formName="LoginForm" />去了再看看
canghaisha 2005-09-29
  • 打赏
  • 举报
回复
validator-rules.xml要和你使用的struts版本一致 另外struts-config.xml中相应action中 要有 validator="true"

你控制台的错误就是我说的版本问题 他说在你的框架验证中找不到 对应的 required方法
King_Style 2005-09-29
  • 打赏
  • 举报
回复
validator-rules.xml这个文件配置正确了吗?
crazyguo007 2005-09-29
  • 打赏
  • 举报
回复
控制台的输出如下:
2005-9-29 16:57:32 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:627)
at org.apache.commons.validator.ValidatorAction.executeValidationMethod(ValidatorAction.java:557)
at org.apache.commons.validator.Field.validateForRule(Field.java:811)
at org.apache.commons.validator.Field.validate(Field.java:890)
at org.apache.commons.validator.Form.validate(Form.java:174)
at org.apache.commons.validator.Validator.validate(Validator.java:367)
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:1164)
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)

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧