`
nesta13
  • 浏览: 115827 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

关于使用commons-validator.jar的校验问题

阅读更多

最近一直都研究struts中的commons-validator.jar的表单验证。但我是从ActionForm中的代码修改转换成使用validation.xml验证方式的。。可是转换过程中确出现了一个问题,就是表单没有进行验证和不出现验证出错信息。

我的数据库里面只有2个表:

bm_user(id,uname,password)

bm_bookmark(id,mark_name,mark_url,mark_desc,user_id)

以下是转换ValidatorForm后的LoginForm类:

  1. package cn.onlysoft.bookmark.form;      
  2.      
  3. import javax.servlet.http.HttpServletRequest;      
  4. import org.apache.struts.action.ActionErrors;      
  5. import org.apache.struts.action.ActionMapping;      
  6. import org.apache.struts.validator.ValidatorForm;      
  7.      
  8. public class LoginForm extends ValidatorForm {      
  9.      
  10.     private String password;      
  11.      
  12.     private String username;      
  13.      
  14.     public String getPassword() {      
  15.         return password;      
  16.     }      
  17.      
  18.     public void setPassword(String password) {      
  19.         this.password = password;      
  20.     }      
  21.      
  22.     public String getUsername() {      
  23.         return username;      
  24.     }      
  25.      
  26.     public void setUsername(String username) {      
  27.         this.username = username;      
  28.     }   
  29.   
  30.     public ActionErrors validate(ActionMapping mapping,HttpServletRequest request){   
  31.         return null;   
  32.    }   
  33. }    

 

以下是继承Action类的LoginAction类,用于处理业务逻辑:

java 代码
  1. /*  
  2.  * Generated by MyEclipse Struts  
  3.  * Template path: templates/java/JavaClass.vtl  
  4.  */  
  5. package cn.onlysoft.bookmark.action;   
  6.   
  7. import javax.servlet.http.HttpServletRequest;   
  8. import javax.servlet.http.HttpServletResponse;   
  9. import org.apache.struts.action.Action;   
  10. import org.apache.struts.action.ActionForm;   
  11. import org.apache.struts.action.ActionForward;   
  12. import org.apache.struts.action.ActionMapping;   
  13.   
  14. import cn.onlysoft.bookmark.form.LoginForm;   
  15.   
  16. public class LoginAction extends Action {   
  17.   
  18.     public ActionForward execute(ActionMapping mapping, ActionForm form,   
  19.             HttpServletRequest request, HttpServletResponse response) {   
  20.         LoginForm LoginForm = (LoginForm) form;   
  21.         return mapping.findForward("toLogin");   
  22.     }   
  23. }  

 

以下是struts-confit.xml文件中的部分配置:

xml 代码
  1. <form-beans >  
  2.     <form-bean name="LoginForm" type="cn.onlysoft.bookmark.form.LoginForm" />  
  3.   
  4.   form-beans>  
  5.   
  6. <action-mappings >  
  7.     <action forward="/WEB-INF/jsp/index.jsp" path="/index" />  
  8.     <action  
  9.       attribute="LoginForm"  
  10.       input="/WEB-INF/jsp/login.jsp"  
  11.       name="LoginForm"  
  12.       path="/Login"  
  13.       scope="request"  
  14.       type="cn.onlysoft.bookmark.action.LoginAction">  
  15.       <forward name="toLogin" path="/WEB-INF/jsp/login.jsp" />  
  16.       <forward  
  17.         name="manage"  
  18.         path="/index.do"  
  19.         redirect="true" />  
  20.     action>  
  21.   action-mappings>  
  22. <message-resources parameter="cn.onlysoft.bookmark.BookmarkResources" />  
  23.   <plug-in className="org.apache.struts.validator.ValidatorPlugIn">  
  24.     <set-property property="stopOnFirstError" value="true" />  
  25.     <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />  
  26.   plug-in>  

 

以下是BookmarkResources.properties文件中的国际化资源配置:

LoginForm.username=username
LoginForm.password=password
errors.header=error message is:
errors.required={0}must not null

以下是validation.xml文件中的全部配置:

xml 代码
  1. <!---->xml version="1.0" encoding="gbk"?>  
  2.           "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"   
  3.           "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd">  
  4. <form-validation>  
  5.     <formset>  
  6.         <form name="LoginForm">  
  7.             <field property="username" depends="required,mask">  
  8.                 <arg0 key="LoginForm.username"/>  
  9.                 <msg key="errors.required" name="required"/>  
  10.                 <var>  
  11.                     <var-name>markvar-name>  
  12.                     <var-value>^[a-zA-Z]+$var-value>  
  13.                 var>  
  14.             field>  
  15.             <field property="password" depends="required">  
  16.                 <arg0 key="LoginForm.password"/>  
  17.             field>  
  18.         form>  
  19.     formset>  
  20. form-validation>  

 

以下是login.jsp中的部分struts标签代码:

<html:form action="/Login"> <!--
<html:form action="/Login" >
   用户 : <html:text property="username"/><br/>
   密码: <html:text property="password"/><br/>
   <html:submit>提交</html:submit> <html:cancel>取消</html:cancel>
</html:form>
<html:errors/>--> </html:form> <html:form action="/Login">
</html:form>

从以上的代码配置来看,是没什么问题的,例如login.jsp、validation.xml、struts-config.xml都没问题,搞了半天,还是搞不出为什么无法实现表单的验证,就是将用户和密码的必填验证,而且还不输入验证失败的错误。

后来想了一下,记得书上说过有一个问题就是,如果使用这种commons-validator.jar验证的话,form-bean的类里面,不需要覆盖父类中的validate方法,而我却在LoginForm里面覆盖了validate这个方法,并且返回null值,也就是说验证通过或者不需要验证,因此,validation.xml里面的验证也就没效。

唉,搞了半天原来是这个错误。。

希望struts初学者要谨记这种错误的存在!!

<html:errors> </html:errors>

分享到:
评论
1 楼 Morgan0916 2007-07-26  
If you want to do some special validation in the method validate(), you should invoke the super.validate(mapping,request).

For example:

    public ActionErrors validate(ActionMapping mapping,HttpServletRequest request){    
        ActionErrors errors=super.validate(mapping,request); 

        // do your validation and add the error message to errors.

        return errors;    
   }    



That's ok 

相关推荐

    apach基于数据验证的工具包 commons-validator-1.3.1.jar

    在`commons-validator-1.3.1.jar`中,你可以找到相关的配置文件,如`validation.xml`。 3. **校验规则(Validation Rules)**:这些规则定义了数据必须满足的条件,例如,字符串长度限制、数值范围等。Validator...

    bean-validator.jar貌似最低2分,想免费分享来着

    Bean Validator(JSR 303/349)是一种用于校验Java对象(尤其是Java Beans)的框架,它提供了一种声明式的方式来定义验证规则,并在运行时执行这些规则。这个jar文件"bean-validator.jar"是从MyEclipse 2014中提取...

    commons-validator-1.7-bin.tar.gz

    在本篇文章中,我们将深入探讨Apache Commons Validator 1.7版本的主要功能、使用方法以及它在实际开发中的应用。 Apache Commons Validator 的核心功能在于提供了一种标准的方式来定义和执行验证规则。它支持多种...

    apache-commons源码及jar文件

    Apache Commons是一个非常有用的工具包,解决各种实际的通用问题。...The commons-validator提供了一个简单的,可扩展的框架来在一个XML文件中定义校验器 (校验方法)和校验规则。支持校验规则的和错误消息的国际化。

    SSM三大框架整合所需jar包+日志/缓存/验证码/ajax/数据校验全部jar包

    commons-logging-1.1.3.jar spring-aop-4.0.0.RELEASE.jar spring-beans-4.0.0.RELEASE.jar spring-context-4.0.0.RELEASE.jar spring-core-4.0.0.RELEASE.jar spring-expression-4.0.0.RELEASE.jar 【jdbc...

    hibernate所包含的所有jar包

    3. **hibernate-validator.jar**:实现了JSR-303/JSR-349标准,提供了数据校验功能,确保输入的数据符合预设规则。 4. **javassist.jar**:Hibernate使用javassist动态生成字节码,实现对实体类的增强,例如懒加载...

    ssh整合时常用的jar包

    4.信息校验包: commons-validator-1.3.0.jar 5.ajax使用时需要加载的包:dwr.jar 6.freemarker使用时加载的包:freemarker-2.3.8.jar 7.hibernate使用加载的包:hibernate3.jar 8.数据库mysql使用时加载的包:...

    MyEclipse_9创建SSH2开发环境必须的独立包

    commons-validator.jar 提供了一个简单的,可扩展的框架来在一个XML文件中定义校验器(校验方法)和校验规则 struts2-spring-plugin-2.0.11.2.jar struts2的spring插件 struts2-core-2.0.11.2jar struts2 2.0.11.2的...

    关于常用的整合ssm框架

    commons-logging-1.1.3.jar spring-aop-4.3.11.RELEASE.jar spring-aspects-4.3.11.RELEASE.jar spring-beans-4.3.11.RELEASE.jar spring-context-4.3.11.RELEASE.jar spring-core-4.3.11.RELEASE.jar spring-...

    commons-lang3-3.0-beta-bin.zip

    关于标签中的"commons-lang.jar",这是Apache Commons Lang项目的主jar文件,包含了所有公共的类和接口。使用这个jar文件,开发者可以在自己的项目中引入Apache Commons Lang的功能,无需自己实现这些通用的工具方法...

    ssh框架整合jar包

    `hibernate-core.jar`包含ORM的核心功能,`hibernate-entitymanager.jar`提供了JPA的支持,`hibernate-validator.jar`是用于数据校验的。 在SSH整合过程中,还需要其他一些常用的jar包,如`log4j.jar`用于日志记录...

    SSH整合类库分析spring3.0.4+hibernate3.5.5+struts2.2.1

    10. `commons-validator.jar`:提供了校验框架,用于表单验证。 11. `ezmorph.jar`:对象转换库,用于数据类型的转换。 12. `dwr.jar`:直接Web远程调用框架,支持AJAX远程调用。 这些Jar包的组合使用,使得SSH框架...

    SSH整合需要的jar包

    - hibernate-validator.jar:Hibernate验证器,实现JSR-303/JSR-349标准,提供数据校验。 - cglib-nodep.jar:代码生成库,Hibernate使用它为不可代理类创建动态子类。 - asm.jar:字节码操作库,用于Hibernate的...

    搭建smvc框架所需jar包

    - `hibernate-validator.jar`:Hibernate验证器,用于数据校验。 5. **Apache Commons库**: - `commons-lang3.jar`:提供各种通用的Java语言工具类。 - `commons-collections.jar`:增强Java集合框架的功能。 ...

    commons-validator-1.2.0-sources

    在源代码包`commons-validator-1.2.0-sources.jar`中,你可以找到以下主要类和接口: - `Validator`:这是验证框架的核心接口,定义了验证的通用方法。 - `ValidatorFactory`:用于创建`Validator`实例,它是整个...

    SSH所需Jar

    - hibernate-validator.jar:提供校验服务。 - jta.jar或jboss-transaction-api_1.2_spec.jar:事务处理API。 此外,还有其他一些通用的JavaWeb开发库,例如: - servlet-api.jar:Servlet API,用于处理HTTP...

    SSH项目所需要的全部jar包

    - `hibernate-validator.jar`: 验证框架,用于数据校验。 - `jta.jar`: Java Transaction API,处理分布式事务。 4. **数据库驱动**: - `mysql-connector-java.jar`: MySQL数据库驱动,用于连接MySQL服务器。 ...

    java ssh开发需要的jar包

    - `hibernate-validator.jar`:提供了JSR 303/349标准的校验框架。 - `hibernate-jpa-2.1-api.jar`:JPA的API接口。 4. **其他依赖**: - `slf4j-api.jar` 和相应的实现(如`slf4j-log4j12.jar`):简单日志门面...

    SSH整合需要的jar包整理

    - `hibernate-validator.jar`用于数据校验,遵循JSR-303标准。 4. **其他辅助库**: - `commons-logging.jar`是日志抽象层,允许使用各种日志实现。 - `log4j.jar`或`slf4j-api.jar`、`slf4j-log4j12.jar`是具体...

Global site tag (gtag.js) - Google Analytics