使用动态ActionForm-DynaActionForm(原理)

在Struts框架中,ActionForm对象用来包装HTML表单数据,并能动态返回用于显示给用户的数据,自定义的ActionForm必需符合JavaBean规范,并继承Struts的ActionForm类,同时用户可以选择的覆盖两个方法:reset()和validate().

   ActionForm的唯一缺点是对于大型的Struts应用,必需以编程的方式创建大量的ActionForm类,如果HTML表单字段发生变化,就必须修改并编译相关的ActionForm类。Struts1.1对此进行了改进,引入了动态ActionForm类的概念,Struts框架的DynaActionForm类及其子类实现了动态ActionForm,该类是ActionForm类的子类。同时也提供了Validator验证框架实现动态验证表单(DynaValidatorForm)的功能。

1、配置动态ActionForm

   动态ActionForm支持在Struts配置文件(struts-config.xml)中完成ActionForm的全部配置,没有必要编写额外的程序创建具体的ActionForm类,配置动态ActionForm的方法为:在Struts配置文件中配置一个<form-bean>元素,将type属性设置为DynaActionForm或它的某个子类的全名,例如: 

<form-bean  name="registForm"  type="org.apache.struts.action.DynaActionForm">
   <form-property name="name" type="java.lang.String"/>
   <form-property name="psw1" type="java.lang.String"/>
   <form-property name="psw2" type="java.lang.String"/>
  </form-bean>

<form-bean>的<form-property>子元素用来设置动态ActionForm的属性,<form-property>元素的name属性指定属性名,type指定属性类型,可以把动态的ActionForm的属性设置为以下Java类型:

  • java.lang.BigDecimal
  • java.lang.BigInteger
  • java.lang.Boolean
  • java.lang.Byte
  • java.lang.Character
  • java.lang.Class
  • java.lang.Double
  • java.lang.Float
  • java.lang.Integer
  • java.lang.Long
  • java.lang.Short
  • java.lang.String
  • java.sql.Date
  • java.sql.Time
  • java.sql.Timestamp

   如果表单的字段值为Java基本类型,在配置时应该用相应的包装类型来代替,比如:int类型的包装类型为Integer:

     <form-property

               initial="0"

               name="age"

               type="java.lang.Integer"/>

并在action中设置使用对应动态Action Form:

<action path="/registSubmit" type="classmate.RegistAction" name="registForm" scope="request"  input="/error.jsp"/>

2、动态ActionForm的reset()方法 参考:http://www.56boke.com/user1/yhaiz/archives/2006/1910.html

3、访问动态ActionForm

  Action类和JSP都可以访问动态ActionForm,使用方法与标准ActionForm大致相同,只有一点小差别,如果使用标准的ActionForm对象,在标准的ActionForm中针对每个属性都提供了get/set方法,来读取或设置属性。

  而DynaActionForm把所有的属性保存在一个Map类对象中,并提供了下面的用于访问所有属性的通用方法:

    public Object get(String name);

    public void set(String name,Object value);

   get(String name)方法根据指定的属性名返回属性值;set(String name,Object value)方法用于为给定的属性赋值。例如,如果访问DynaActionForm类中的email属性,可以采用:

   //get email

   String email = (String)form.get("email");

  // set email

  form.set("email",example@example.com);

这里建立Action Bean,要从动态ActionForm中接收表单数据

public class RegistAction extends Action {

 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
  DynaActionForm dyform = (DynaActionForm) form;
  
  //get dynamic action form
  String name = (String)dyform.get("name");
  String psw1 = (String)dyform.get("psw1");
  String psw2 = (String)dyform.get("psw2");
   .......................................................

在JSP页面上和使用ActionForm一样:<form action="registSubmit.do" method="post">

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Struts是一个基于Java EE的开源Web应用程序框架,它使用了MVC(Model-View-Controller)设计模式,用于开发企业级Java Web应用程序。 下面是一个使用表格从多个维度表示Struts的解释: | 维度 | 描述 | | --- | --- | | 概述 | Struts是一个Web应用程序框架,用于开发Java Web应用程序。它使用MVC模式,提供了一套强大的工具和API,使得开发Web应用程序更加容易和快速。 | | 架构 | Struts基于MVC架构,将应用程序分成三个部分:模型(Model)、视图(View)和控制器(Controller)。模型表示应用程序中的数据和业务逻辑,视图显示数据和提供用户界面,控制器处理用户请求并调用模型和视图。 | | 特征 | Struts提供了一系列特征,包括:表单验证、国际化、异常处理、安全性、文件上传、Ajax支持等。 | | 组件 | Struts由多个组件组成,包括:ActionActionForm、Interceptors、Result、Validator、Taglibs等。 | | 工作流 | Struts的工作流可以描述为:用户请求(Request)→控制器(Controller)→Action→模型(Model)→视图(View)→响应(Response)。 | | 优势 | Struts具有许多优势,包括:成熟的技术、强大的工具和API、易于学习和使用、灵活性、可扩展性、可维护性等。 | | 缺点 | Struts的缺点包括:学习曲线较陡峭、需要编写大量的XML配置文件、不支持注解、对于初学者来说有些复杂等。 |

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值