`

Struts动态ActionForm,验证框架

    博客分类:
  • Java
阅读更多

        引入动态表单DynaActionForm的目的在于减少ActionForm的数目。DynaActionForm和普通的ActionForm的用法基本相同。不同之处在于:普通的ActionForm类必须为每个属性提供getXxx和setXxx方法,以实现对属性的存取操作。而DynaActionForm类是将属性保存在一个HashMap类型的对象中,并同时提供相应的get(“属性名”),set(“属性名”,“属性值”)形式的存取方法。例如,要获取DynaActionForm中的name属性值,可以用下述的代码格式:
String name=(String)form.get(“name”);
        需要注意的是:由于属性值最终存放在HashMap对象中,受其限制,动态AcionForm的get()方法返回值为Object类型,因此在使用时需要强制转换。由于DynaActionForm不需要重写validate()方法来实现表单验证,因此在引入动态ActionForm的同时,也引入了Validator验证框架以实现表单数据的动态验证。
        Struts的Validator验证框架定义了常用的十几个验证规则,如:required(验证非空)、minlength(验证最小长度)、maxlength(验证最大长度)、intRange(验证整形范围)、email(验证电子邮件地址)、date(验证日期)等,并且实现了客户端的Javascript验证和服务器端验证,以下是在myeclipse环境下使用Validator验证框架的步骤:
一、 创建基于Struts的web工程

二、 将validator-rules.xml中以下代码拷贝到资源文件中

# Struts Validator Error Messages
errors.required={0} is required.
errors.minlength={0} can not be less than {1} characters.
errors.maxlength={0} can not be greater than {1} characters.
errors.invalid={0} is invalid.

errors.byte={0} must be a byte.
errors.short={0} must be a short.
errors.integer={0} must be an integer.
errors.long={0} must be a long.
errors.float={0} must be a float.
errors.double={0} must be a double.

errors.date={0} is not a date.
errors.range={0} is not in the range {1} through {2}.
errors.creditcard={0} is an invalid credit card number.
errors.email={0} is an invalid e-mail address.

 

三、 将validator-rules.xml中以下代码拷贝到struts-config.xml配置文件中,验证框架将以插件形式被注入struts框架

 

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

 

 

四、创建validation.xml文件

 
五、实现客户端的javascript验证,只需在<form onSubmit=”return validateLonginActionForm(this);”>配置提交事件和使用<html:javascript formName=”loginActionForm”/>

具体示例代码如下:
Login.jsp

 

<%@ page language="java" pageEncoding="GB18030"%>

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<html:html lang="true">
<head>
<title>login.jsp</title>
</head>

<body>
<html:form action="login.do" method="post" onsubmit="return validateLoginForm(this)">
用户名:<html:text property="name"></html:text><br>
密 码:<html:password property="password"></html:password><br>
<html:submit>提交</html:submit>
<html:reset>重置</html:reset>
</html:form>
<html:javascript formName="loginForm"/>
</body>
</html:html>
 
LoginAction.java
package com.csu.struts.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 org.apache.struts.validator.DynaValidatorActionForm;

public class LoginAction extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
DynaValidatorActionForm loginForm = (DynaValidatorActionForm) form;// TODO Auto-generated method stub
System.out.println("username:"+loginForm.get("name"));
System.out.println("password:"+loginForm.get("password"));
return null;
}
}
 
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="uploadForm" type="com.csu.struts.form.UploadForm" />
    <form-bean name="loginForm" type="org.apache.struts.validator.DynaValidatorActionForm">
    <form-property name="password" type="java.lang.String" />
    <form-property name="name" type="java.lang.String" />
    </form-bean>
</form-beans>

<global-exceptions /><global-forwards />
<action-mappings >
    <action
        attribute="uploadForm"
        input="/upload.jsp"
        name="uploadForm"
        path="/upload"
        scope="request"
        type="com.csu.struts.action.UploadAction" />
    <action
        attribute="loginForm"
        input="/form/login.jsp"
        name="loginForm"
        path="/login"
        scope="request"
        type="com.csu.struts.action.LoginAction" />
</action-mappings>

<message-resources parameter="com.csu.struts.ApplicationResources" />
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validator.xml"/>
</plug-in>
</struts-config>
 
Validator.xml
<!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
<form-validation>
<formset>
<form name="loginForm">
<field property="name" depends="required">
<arg0 key="err.name"/>
</field>
<field property="password" depends="required,minlength">
<arg0 key="err.password"/>
<arg1 key="${var:minlength}" resource="false"/>
<var>
<var-name>minlength</var-name>
<var-value>6</var-value>
</var>
</field>
</form>
</formset>
</form-validation>
 
ApplicationResources.properties
# Resources for parameter 'com.csu.struts.ApplicationResources'
# Project StrutsDemo
errors.required={0} 不能为空!!
errors.minlength={0} 不能少于 {1} 个字符!!
err.name=用户名
err.password=密码
 
        实际上你的FORM还可以继承ValidatorActionForm和DynaValidatorActionForm,这两种与他们对应的ValidatorForm和DynaValidatorForm的唯一区别是:在struts-config.xml中查找对应的FORM类时,前者根据ACTION的PATH值,而后者使用NAME值
分享到:
评论

相关推荐

    Struts动态表单验证

    Struts提供了两种验证方式:ActionForm验证和Validator框架验证。ActionForm验证是早期版本中的方法,通过在ActionForm类中定义验证逻辑。Validator框架则是Struts 1.x中的增强功能,允许更灵活的XML配置和可重用的...

    struts中ActionForm的validate方法使用小得

    Struts框架是Java Web开发中常用的MVC框架之一,它为开发者提供了一种结构化、易于维护的应用程序构建方式。在Struts中,ActionForm类是处理用户输入数据的核心组件,它封装了请求参数并负责业务逻辑验证。本文将...

    struts1使用actionform实现表单验证

    ActionForm是Struts1中处理用户输入的核心组件,它负责接收、验证和封装来自表单的数据。在本文中,我们将深入探讨如何利用ActionForm实现表单验证,并在验证失败时追加错误信息。 1. **ActionForm介绍** ...

    struts 视频 struts视频 actionform

    在Struts框架中,ActionForm类负责收集、验证和封装来自用户界面的数据。当用户通过HTML表单提交请求时,这些数据会被发送到服务器,并由Struts框架自动绑定到ActionForm实例的属性上。ActionForm的每个属性对应表单...

    struts7验证框架 struts7验证框架

    Struts7验证框架是用于Java Web开发中的一个关键组件,主要负责处理用户输入数据的验证。这个框架在学习和实际项目开发中具有广泛的应用,因为它能够有效地提高代码的可维护性和减少开发工作量。 传统的Struts框架...

    Struts高级开发_动态ActionForm.avi

    1. **ActionForm接口**:首先,你需要了解ActionForm的基本概念,它是Struts框架中一个实现了Servlet API的ActionForm接口的类,负责收集和验证来自HTML表单的数据。 2. **动态生成ActionForm**:在动态ActionForm...

    提交多行数据到Struts的ActionForm的List属性中

    首先,ActionForm是Struts框架中用于接收和验证用户输入的数据的类。它继承自org.apache.struts.action.ActionForm接口,并包含多个字段来存储表单中的数据。当用户提交表单时,Struts框架会自动将表单数据填充到...

    Struts1的validator验证框架

    ### Struts1的Validator验证框架详解 在Java Web开发领域,Struts1作为一个经典且流行的MVC框架,提供了丰富的功能来构建动态Web应用。其中,Validator框架是Struts1用于客户端和服务端表单验证的强大工具,它能...

    struts的validation验证框架源码

    Struts的Validation验证框架是基于Java的Web应用开发中的一个重要组件,主要用于处理用户输入的数据验证。这个框架在Struts 1.x版本中被广泛使用,它通过定义一系列的规则来确保用户提交的数据满足应用程序的需求,...

    Struts1.x的验证框架示例

    验证框架是Struts1.x的一个重要组成部分,用于处理用户输入数据的验证,确保数据的准确性和完整性。以下是对Struts1.x验证框架的详细说明: 1. **验证框架的引入** 在Struts1.x中,验证通常分为两个阶段:客户端...

    Struts动态表单验证Demo视频

    总的来说,"Struts动态表单验证Demo视频"是学习Struts框架中动态表单验证功能的一个宝贵资源,对于Java Web开发者来说,掌握这一技能可以大大提高开发效率,减少因数据验证问题导致的bug。记得在观看过程中,结合源...

    Struts的Validator验证框架使用教程

    Struts的Validator验证框架是Java Web开发中常用的一个组件,主要用于处理用户输入的数据验证。它提供了强大的、可扩展的验证规则,使得开发者可以方便地在应用程序中实施数据校验,从而保证了数据的准确性和安全性...

    Struts Validator验证框架详细讲解.txt

    ### Struts Validator 验证框架详细讲解 #### 引言 在Java Web开发中,数据验证是确保应用程序安全性和用户体验的重要环节。Struts框架作为早期流行的MVC框架之一,提供了强大的验证机制——Struts Validator,它...

    struts验证框架实例

    1. **ValidatorForm**: 这是Struts验证框架的基础,继承自`org.apache.struts.action.ActionForm`类。开发者需要创建一个继承自ValidatorForm的类,并在其中定义待验证的属性。 2. **Validation.xml**: 这是验证...

    struts入门及验证框架及国际化

    在这里,我们将深入探讨Struts的基础知识、Validator验证框架以及国际化的实现。 **一、Struts框架基础** 1. **MVC模式**:Struts是基于MVC设计模式的,将业务逻辑、数据和用户界面分离,使得开发者可以独立地修改...

    Struts的验证框架Validate使用[2]

    Struts的验证框架Validate是Java Web开发中一个关键的组件,尤其在构建MVC(Model-View-Controller)架构的应用程序时。这个框架主要用于确保用户输入的数据满足预定义的业务规则,从而提升应用的安全性和数据的准确...

    struts 验证框架 demo

    Struts的验证框架通常与ActionForm类一起使用,ActionForm是模型层的一个组件,它包含了来自用户表单的输入数据。在提交表单时,Struts会调用ActionForm中的验证规则,对这些数据进行验证。如果验证失败,框架将返回...

    struts-验证框架

    Struts验证框架是Java Web开发中的一个重要组成部分,主要用于在用户输入数据时进行验证,确保数据的完整性和正确性。这个框架结合了MVC(Model-View-Controller)设计模式,帮助开发者实现业务逻辑与表现层的分离,...

    struts验证框架例子

    3. **关联表单和验证规则**:在struts-config.xml或struts.xml配置文件中,将ActionForm与对应的验证规则文件关联起来,这样当用户提交表单时,Struts会自动调用验证框架进行数据验证。 4. **处理验证结果**:如果...

    Struts 结合 Validate框架验证详解

    Validate框架是Struts提供的一种轻量级验证解决方案,它允许开发者通过XML配置文件定义验证规则,而不是硬编码在ActionForm类中。这使得验证规则更加灵活,易于维护。 在"Struts的Validator-rules[1].xml详解.doc...

Global site tag (gtag.js) - Google Analytics