这个问题困惑我好几天了,一直都不能解决,又在网上搜了好久,可能是MyEclipse版本的问题,总是运行不正确.今天摆题目在这里,希望大牛帮忙啃啃...题目:Validator简单验证
开发语言:MyEclipse 6.5
新建一个TestValidator项目,再建一个Struts,bean继承ValidatorForm类.Struts还自动生成一个validator-rules.xml文件(没有validation文件).
第二步:在struts-config.xml配置这个:<?xml version="1.0" encoding="UTF-8"?>
<!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-sources />
  <form-beans >
    <form-bean name="loginForm" type="com.yourcompany.struts.form.LoginForm" />
  </form-beans>  <global-exceptions />
  <global-forwards />
  <action-mappings >
    <action
      attribute="loginForm"
      input="/form/login.jsp"
      name="loginForm"
      path="/login"
      scope="request"
      type="com.yourcompany.struts.action.LoginAction">
      <forward name="success" path="/success.jsp" />
      <forward name="fail" path="/fail.jsp" />
    </action>  </action-mappings>  <message-resources parameter="com.yourcompany.struts.ApplicationResources" />
  <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
     <set-property property="pathnams" 
                   value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
  </plug-in>
</struts-config>第三步:在WEB-INF下建立一个validation文件,内容如下:<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml-body PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN" "validator_1_0.dtd">//不知这个有没有错误.
<form-validation>
<formset>
<form name="loginForm">
<field property="password" depends="required">
<arg0 key="errors.password"></arg0></field>
</form>
</formset>
</form-validation>第三步,资源文件(ApplicationResources.properties)内容如下:errors.password=no password
# Resources for parameter 'com.yourcompany.struts.ApplicationResources'
# Project WQSD最后:login.jsp内容如下.<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> 
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
 
<html> 
<head>
<title>JSP for LoginForm form</title>
</head>
<body>
    <html:javascript formName="loginForm" />
<html:form action="login.do" onsubmit="return validateLoginForm(this);">
password : <html:password property="password"/><html:errors property="password"/><br/>
username : <html:text property="username"/><html:errors property="username"/><br/>
<html:submit/><html:cancel/>
    </html:form>

</body>
</html>运行后错误如下 :org.apache.jasper.JasperException: Exception in JSP: /form/login.jsp:107:  <title>JSP for LoginForm form</title>
8:  </head>
9:  <body>
10:      <html:javascript formName="loginForm" />
11:  <html:form action="login.do" onsubmit="return validateLoginForm(this);">
12: 
13:  password : <html:password property="password"/><html:errors property="password"/><br/>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)root causejavax.servlet.ServletException: ValidatorResources not found in application scope under key "org.apache.commons.validator.VALIDATOR_RESOURCES"
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:843)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:776)
org.apache.jsp.form.login_jsp._jspService(login_jsp.java:96)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)root causejavax.servlet.jsp.JspException: ValidatorResources not found in application scope under key "org.apache.commons.validator.VALIDATOR_RESOURCES"
org.apache.struts.taglib.html.JavascriptValidatorTag.renderJavascript(JavascriptValidatorTag.java:373)
org.apache.struts.taglib.html.JavascriptValidatorTag.doStartTag(JavascriptValidatorTag.java:349)
org.apache.jsp.form.login_jsp._jspx_meth_html_javascript_0(login_jsp.java:112)
org.apache.jsp.form.login_jsp._jspService(login_jsp.java:80)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
一个简单的validator验证难了我好几天,晕.希望高手帮忙.
如果你没空看上面的代码,正好手上有个现成的validator验证程序,希望你能Email给我(要求有点过分了,呵呵),谢谢.

解决方案 »

  1.   

    发了..不过我的MyEclipse版本号最好是6.0的,,
    不知道有没有冲突...
      

  2.   

    commons-validator.jar
    检查一下这个包,
      

  3.   

    很感谢mssaide兄的validator的例子,能够EMAIL约我,非常感谢.
    但mssaide兄发给我的例子是在Action里判断的,好像没有用到validator框架?
    因为你login.jsp里的内容是:<%@ page language="java" pageEncoding="GBK"%>
    <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> 
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
     
    <html> 
    <head>
    <title>JSP for DynaValidatorForm form</title>
    </head>
    <body>
    <html:form action="/login">
    <table>
    <tr>
    <td>用户名:</td>
    <td><html:text property="username"/></td>
    <td><html:errors property="username"/></td>
    </tr>
    <tr>
    <td>密  码:</td>
    <td><html:password property="pwd"/></td>
    <td><html:errors property="pwd"/></td>
    </tr>
    <tr>
    <td colspan="3"><html:submit value="提交"/><html:errors property="getlogin"/></td>
    </tr>
    </table>
    </html:form>
    </body>
    </html>=============================================================================没有用到<html:javascript formName="loginForm">
           <html:form action="/login" onsubmit="return validateLoginForm(this);">
    这一句.我要用的是用<html:javascript>验证里面的内容.好像这样在你的例子没有用到.
    不知我说的对不对,呵呵.因为我是初学者,说错了还请多多包涵.
    还有还请高手多多指教,继续帮忙...谢谢.
      

  4.   

    还恳请高手如果手头上有这样一个现成的例子,能够EMAIL给我:[email protected] 谢谢.
      

  5.   

    还想问多一句,用<html:javascript/>验证bean里面的数据,要不要加什么包的.
    例如,struts.jar,commons-validator.jar和jakarta-oro.jar包,

    好像在MyEclipse下建立struts项目时已自动生成了???是不是这样呢?