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

DynaValidatorForm类

阅读更多

DynaValidatorForm类

  http://hi.baidu.com/zml525/blog/item/045d80d41e73bd01a18bb7fa.html

DynaValidatorForm类

DynaValidatorForm是DynaActionForm的子类,它能够提供动态ActionForm和自动表单输入验证的功能。和使用DynaActionForm类似,你必须首先在配置文件中进行配置:


<form-beans>
 <form-bean name="loginForm" type="org.apache.struts.validator.DynaValidatorForm"> 
  <form-property name="actionClass" type="java.lang.String"/>     
  <form-property name="username" type="java.lang.String"/> 
  <form-property name="password" type="java.lang.String"/>  
 </form-bean>
</form-beans>


同时要定义验证的插件:


  <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
 <set-property property="pathnames"  
 value="/WEB-INF/validator-rules.xml,  
 /WEB-INF/validation.xml"/>
  </plug-in>


其中的validator.xml和validator-rules.xml分别表示验证定义和验证规则的内容(可以合并在一起),比如针对上例中的DynaValidatorForm,我们有如下验证定义(validator.xml):


<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE form-validation PUBLIC  
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"  
"http://jakarta.apache.org/commons/dtds/validator_1_0.dtd">
<!--    Validation Rules    $Id: validation.xml-->

<form-validation>  
<!-- ========== Default Language Form Definitions ===================== -->
<formset>  
 <form name="loginForm">     
  <field property="username" depends="required, minlength,maxlength"> 
   <arg0   key="prompt.username"/>          
   <arg1   key="${var:minlength}" name="minlength" resource="false"/>       
   <arg2   key="${var:maxlength}" name="maxlength" resource="false"/>              
   <var>                
    <var-name>maxlength</var-name>    
    <var-value>16</var-value>         
   </var>          
   <var>      
    <var-name>minlength</var-name>     
    <var-value>3</var-value>         
   </var>       
  </field>     
  <field property="password" depends="required, minlength,maxlength" bundle="alternate">          
   <arg0   key="prompt.password"/>   
   <arg1   key="${var:minlength}" name="minlength" resource="false"/>          
   <arg2   key="${var:maxlength}" name="maxlength" resource="false"/>  
   <var>              
    <var-name>maxlength</var-name>     
    <var-value>16</var-value>        
   </var>          
   <var>      
    <var-name>minlength</var-name> 
    <var-value>3</var-value>       
   </var>        
  </field>    
 </form>   
</formset>
</form-validation>

从上述定义中,我们可以看到对于字段username有三项验证:required, minlength, maxlength,意思是该字段不能为空,而且长度在3和16之间。而validator-rules.xml文件则可以采用Struts提供的缺省文 件。注意在<form-bean>中定义的form是如何与validation.xml中的form关联起来的。最后,要启动自动验证功 能,还需要将Action配置的validate属性设置为true。



<action path="/login"  
type="com.ncu.test.LoginAction"
name="loginForm"          
scope="request"         
input="tile.userLogin"validate="true">


此时,Struts将根据xml配置文件中的定义来检验表单输入,并将不符合要求的错误信息输出到页面。但是你可能会想:这个功能虽然好,可是什么检验都跑到服务器端执行,效率方面和用户易用性方面是不是有些问题?你可能会怀念起那简单的JavaScript客户端验证。

不用担心,在Struts 1.1中也支持JavaScript客户端验证。如果你选择了客户端验证,当某个表单被提交以后,Struts 1.1启动客户端验证,如果浏览器不支持JavaScript验证,则服务器端验证被启动,这种双重验证机制能够最大限度地满足各种开发者的需要。 JavaScript验证代码也是在validator-rules.xml文件中定义的。要启动客户端验证,你必须在相应的JSP文件中做如下设置:

  1. 为<html:form>增加onsubmit属性
  2. 设置Javascript支持

 

下表中列出了一JSP文件的示例代码,红字部分为Javascript验证所需代码。


<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<table bgcolor="#9AFF9A" cellspacing="0" cellpadding="10" border="1" width="100%">
 <tr>
 <td> 
 <table cellspacing="0" cellpadding="0" border="0" width="100%"> 
 <tr bgcolor="#696969"> 
  <td align="center">     
  <font color="#FFFFFF">Panel 3: Profile</font>  
  </td>
  </tr> 
 <tr>  
  <td><br> 
  <html:errors/>  
  <html:form action="/login.do" focus="username"  onsubmit="return validateLoginForm(this);">  
  <html:hidden property="actionClass"/>   
  <center>      
  <table>      
   <tr>        
   <td>UserName:</td>   
   <td><html:text property="username" size="20"/></td> 
   </tr> 
   <tr>  
   <td>Password:</td>   
   <td><html:password property="password" size="20"/></td>    
   </tr>  
   <tr>  
   <td colspan=2><html:submit property="submitProperty" value="Submit"/></td>     
  </table>   
  </center>  
  </html:form> 
  <html:javascript formName="loginForm" dynamicJavascript="true" staticJavascript="false"/>  
 
 <script language="Javascript1.1" src="staticJavascript.jsp"></script>  
 </td> 
 </tr> 
 </table>
 </td>
 </tr>
</table>

其中onsubmit的值为"return validateLoginForm(this);",它的语法为:

return validate + struts-config.xml中定义的form-bean名称 + (this);

staticJavascript.jsp的内容为:


<%@ page language="java" %>
<%-- set document type to Javascript (addresses a bug in Netscape according to a web resource --%>
<%@ page contentType="application/x-javascript" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<html:javascript dynamicJavascript="false" staticJavascript="true"/>


分享到:
评论

相关推荐

    Struts动态表单验证Demo视频

    在Struts框架中,动态表单验证通常通过DynaValidatorForm类实现。 DynaValidatorForm是Struts提供的一个可扩展的、基于属性的表单类,它可以动态地定义和验证表单字段。与传统的HTML表单不同,DynaValidatorForm...

    动态form编写

    根据提供的文件信息,我们可以深入探讨动态表单在Struts框架中的实现方式及其与DynaActionForm和DynaValidatorForm类的关系。 ### Struts框架中的动态表单 #### 1. **动态表单的基本概念** 在Struts框架中,动态...

    ValidatorForm举例

    接下来,创建一个Action类,该类可以继承自 `ValidatorForm` 或 `DynaValidatorForm`,并根据需求定义属性和getter/setter方法。 接着,创建一个对应的HTML表单页面,使用Struts标签库(struts-tiles或struts-logic...

    struts 实现文件上传与下载

    1. **类继承**: `FileUploadAction`类继承自`BaseAction`类。这意味着它可能重用了`BaseAction`中的一些通用逻辑,如异常处理、数据库访问等。 2. **依赖导入**: - `java.io.*`: 提供了基本的输入输出流操作。 -...

    struts_dynavalidator_login.rar_struts

    3. **DynaValidatorForm**:这是动态验证使用的表单类,继承自`org.apache.struts.validator.DynaValidatorForm`。它可以动态地定义验证规则,无需为每个属性创建单独的getter和setter方法。 4. **ValidatorPlugIn*...

    Struts+Spring+Hibernate练习(完整)

    2. **DynaValidatorForm**:在Struts中,`DynaValidatorForm`是一个动态表单类,它可以动态地添加和验证表单字段。在这个例子中,`username`和`password`是两个需要验证的字段。在`validation.xml`文件中定义了验证...

    Struts+Spring+Hibernate开发实例.pdf

    - **History** 和 **Students** 类是实体类的示例,它们映射了数据库中的历史信息表和学生信息表。 - **Criteria API** 是Hibernate提供的一个查询API,允许开发者以面向对象的方式来构建查询。文档提到了...

    轻量级J2EE企业应用实战源码 3 上.rar

    8. **DynaValidatorForm**:与`DynaActionForm`类似,`DynaValidatorForm`是Struts的一个验证表单类,它不仅提供了动态字段的能力,还内置了验证功能,简化了表单验证的过程。 这些文件名揭示了本章内容主要集中在...

    Struts+Spring+Hibernate整合练习

    在描述中,创建了一个简单的登录Action和对应的ActionForm,使用了DynaValidatorForm,这是Struts的动态表单类,允许在运行时动态验证表单字段。同时,配置了validator-rules.xml和validation.xml来定义验证规则,...

    struts_02源代码

    DynaValidatorForm 是 Struts 提供的一种灵活的表单验证机制,它允许在运行时动态地定义表单字段的验证规则,而无需创建实体类。 2. **15_struts_dispatchaction_usermgr**: DispatchAction 是 Struts 提供的一个...

    struts工作原理和开发流程

    可以使用 DynaValidatorForm 或 ValidatorForm 子类进行验证。 3. **配置规则**:有两个核心的规则文件,即validator-rules.xml和validation.xml。前者是通用的验证规则,一般不需要改动,而后者是针对特定表单的...

    Struts高级部分(2)(常用Action、验证框架、动态Form

    2. **JSP标签库**:Struts提供了` DynaActionForm`和`DynaValidatorForm`,它们是动态Form的基础。在JSP页面中,可以使用Struts的标签库动态显示和处理表单字段。 3. **ModelDriven接口**:ModelDriven接口允许...

    Spring框架1

    - **DynaValidatorForm**:动态表单,允许动态指定字段和验证规则。 - **ActionMapping**:存储配置文件中action节点的元数据,定义了请求URL与Action类的映射关系。 4. **AOP和IOC**: - **AOP(面向方面编程)...

    struts_hibernate_spring实例

    ActionForm配置为动态Form,继承自DynaValidatorForm,包含了两个属性`username`和`password`。`jsp`文件`login.jsp`被用来展示用户输入界面,并通过`Action`的`execute`方法进行处理。在`struts-config.xml`中,...

    struts+hibernate+spring 登录开发实例

    `DynaValidatorForm`是Struts提供的动态表单类,可以自动验证表单数据。`index.jsp`是首页,包含一个链接指向`login.jsp`,用户通过点击这个链接触发登录流程。 【Hibernate框架】 Hibernate是Java中的一个ORM框架...

    ssh项目流程和注意事项

    - 表单类选择:例如,在本例中使用`DynaValidatorForm`作为表单验证的基础类。 - 控制器配置:使用`MappingDispatchAction`作为控制器,处理请求转发。 - 验证规则配置:通过`ValidatorPlugIn`插件进行表单验证...

    SSH 配置相关信息

    - 使用DynaValidatorForm表单。 - **9.2 配置Struts配置文件** - 在`struts-config.xml`中配置Action映射,以便用户请求能够被正确转发到相应的Action类。 通过以上步骤,SSH框架的整合配置工作基本完成。在整个...

Global site tag (gtag.js) - Google Analytics