最近一直都研究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类:
- package cn.onlysoft.bookmark.form;
-
- import javax.servlet.http.HttpServletRequest;
- import org.apache.struts.action.ActionErrors;
- import org.apache.struts.action.ActionMapping;
- import org.apache.struts.validator.ValidatorForm;
-
- public class LoginForm extends ValidatorForm {
-
- private String password;
-
- private String username;
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-
- public String getUsername() {
- return username;
- }
-
- public void setUsername(String username) {
- this.username = username;
- }
-
- public ActionErrors validate(ActionMapping mapping,HttpServletRequest request){
- return null;
- }
- }
以下是继承Action类的LoginAction类,用于处理业务逻辑:
java 代码
-
-
-
-
- package cn.onlysoft.bookmark.action;
-
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.apache.struts.action.Action;
- import org.apache.struts.action.ActionForm;
- import org.apache.struts.action.ActionForward;
- import org.apache.struts.action.ActionMapping;
-
- import cn.onlysoft.bookmark.form.LoginForm;
-
- public class LoginAction extends Action {
-
- public ActionForward execute(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response) {
- LoginForm LoginForm = (LoginForm) form;
- return mapping.findForward("toLogin");
- }
- }
以下是struts-confit.xml文件中的部分配置:
xml 代码
- <form-beans >
- <form-bean name="LoginForm" type="cn.onlysoft.bookmark.form.LoginForm" />
-
- form-beans>
-
- <action-mappings >
- <action forward="/WEB-INF/jsp/index.jsp" path="/index" />
- <action
- attribute="LoginForm"
- input="/WEB-INF/jsp/login.jsp"
- name="LoginForm"
- path="/Login"
- scope="request"
- type="cn.onlysoft.bookmark.action.LoginAction">
- <forward name="toLogin" path="/WEB-INF/jsp/login.jsp" />
- <forward
- name="manage"
- path="/index.do"
- redirect="true" />
- action>
- action-mappings>
- <message-resources parameter="cn.onlysoft.bookmark.BookmarkResources" />
- <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
- <set-property property="stopOnFirstError" value="true" />
- <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
- plug-in>
以下是BookmarkResources.properties文件中的国际化资源配置:
LoginForm.username=username
LoginForm.password=password
errors.header=error message is:
errors.required={0}must not null
以下是validation.xml文件中的全部配置:
xml 代码
- <!---->xml version="1.0" encoding="gbk"?>
- "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
- "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd">
- <form-validation>
- <formset>
- <form name="LoginForm">
- <field property="username" depends="required,mask">
- <arg0 key="LoginForm.username"/>
- <msg key="errors.required" name="required"/>
- <var>
- <var-name>markvar-name>
- <var-value>^[a-zA-Z]+$var-value>
- var>
- field>
- <field property="password" depends="required">
- <arg0 key="LoginForm.password"/>
- field>
- form>
- formset>
- 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>
分享到:
相关推荐
在`commons-validator-1.3.1.jar`中,你可以找到相关的配置文件,如`validation.xml`。 3. **校验规则(Validation Rules)**:这些规则定义了数据必须满足的条件,例如,字符串长度限制、数值范围等。Validator...
Bean Validator(JSR 303/349)是一种用于校验Java对象(尤其是Java Beans)的框架,它提供了一种声明式的方式来定义验证规则,并在运行时执行这些规则。这个jar文件"bean-validator.jar"是从MyEclipse 2014中提取...
在本篇文章中,我们将深入探讨Apache Commons Validator 1.7版本的主要功能、使用方法以及它在实际开发中的应用。 Apache Commons Validator 的核心功能在于提供了一种标准的方式来定义和执行验证规则。它支持多种...
Apache Commons是一个非常有用的工具包,解决各种实际的通用问题。...The commons-validator提供了一个简单的,可扩展的框架来在一个XML文件中定义校验器 (校验方法)和校验规则。支持校验规则的和错误消息的国际化。
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...
3. **hibernate-validator.jar**:实现了JSR-303/JSR-349标准,提供了数据校验功能,确保输入的数据符合预设规则。 4. **javassist.jar**:Hibernate使用javassist动态生成字节码,实现对实体类的增强,例如懒加载...
4.信息校验包: commons-validator-1.3.0.jar 5.ajax使用时需要加载的包:dwr.jar 6.freemarker使用时加载的包:freemarker-2.3.8.jar 7.hibernate使用加载的包:hibernate3.jar 8.数据库mysql使用时加载的包:...
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的...
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-lang.jar",这是Apache Commons Lang项目的主jar文件,包含了所有公共的类和接口。使用这个jar文件,开发者可以在自己的项目中引入Apache Commons Lang的功能,无需自己实现这些通用的工具方法...
`hibernate-core.jar`包含ORM的核心功能,`hibernate-entitymanager.jar`提供了JPA的支持,`hibernate-validator.jar`是用于数据校验的。 在SSH整合过程中,还需要其他一些常用的jar包,如`log4j.jar`用于日志记录...
10. `commons-validator.jar`:提供了校验框架,用于表单验证。 11. `ezmorph.jar`:对象转换库,用于数据类型的转换。 12. `dwr.jar`:直接Web远程调用框架,支持AJAX远程调用。 这些Jar包的组合使用,使得SSH框架...
- hibernate-validator.jar:Hibernate验证器,实现JSR-303/JSR-349标准,提供数据校验。 - cglib-nodep.jar:代码生成库,Hibernate使用它为不可代理类创建动态子类。 - asm.jar:字节码操作库,用于Hibernate的...
- `hibernate-validator.jar`:Hibernate验证器,用于数据校验。 5. **Apache Commons库**: - `commons-lang3.jar`:提供各种通用的Java语言工具类。 - `commons-collections.jar`:增强Java集合框架的功能。 ...
在源代码包`commons-validator-1.2.0-sources.jar`中,你可以找到以下主要类和接口: - `Validator`:这是验证框架的核心接口,定义了验证的通用方法。 - `ValidatorFactory`:用于创建`Validator`实例,它是整个...
- hibernate-validator.jar:提供校验服务。 - jta.jar或jboss-transaction-api_1.2_spec.jar:事务处理API。 此外,还有其他一些通用的JavaWeb开发库,例如: - servlet-api.jar:Servlet API,用于处理HTTP...
- `hibernate-validator.jar`: 验证框架,用于数据校验。 - `jta.jar`: Java Transaction API,处理分布式事务。 4. **数据库驱动**: - `mysql-connector-java.jar`: MySQL数据库驱动,用于连接MySQL服务器。 ...
- `hibernate-validator.jar`:提供了JSR 303/349标准的校验框架。 - `hibernate-jpa-2.1-api.jar`:JPA的API接口。 4. **其他依赖**: - `slf4j-api.jar` 和相应的实现(如`slf4j-log4j12.jar`):简单日志门面...
- `hibernate-validator.jar`用于数据校验,遵循JSR-303标准。 4. **其他辅助库**: - `commons-logging.jar`是日志抽象层,允许使用各种日志实现。 - `log4j.jar`或`slf4j-api.jar`、`slf4j-log4j12.jar`是具体...