zoukankan      html  css  js  c++  java
  • 动态ActionFormDynaActionForm

    1,DynaActionForm

          动态ActionForm是为了避免标准ActionForm膨胀而设计的,使用动态ActionForm可以获得标准ActionForm的所有功能,动态actionForm的配置,动态actonForm的配置中type使用的是struts提供的一个动态ActionForm类----DynaActionForm类,DynaActionForm类继承了ActionForm。

    <form-beans>
      <form-bean name="dynaForm" type="org.apache.struts.action.DynaActionForm">
             <form-property name="username" type="java.lang.String"></form-property>
             <form-property name="age" type="java.lang.Integer"></form-property>
      </form-bean>  
    </form-beans>

    在该配置文件中form-bean的属性值是struts中的一个DynaActionForm类,该类继承了ActionForm类

    form-property配置的是表单的字段,其中name要与表单中的name相同,type指的是表单中name的数据类型,在form-property中还可以像标准ActionForm那样实现reset设置初始值,或者实现validate实现验证,但是在动态表单中采用的是动态验证,也就是使用的是验证框架,需要加载一个验证插件,在验证插件中配置验证。

    设置了动态ActionForm后就可以不用在写继承ActionForm的类了。直接在Action中使用动态ActionForm即可。

    DynaActionForm采用的是map集合以键值对的形式存放表单数据

    Action中的代码:

    /**
     * 测试动态ActionForm
     * @author Administrator
     *
     */
    public class DynaActionFormTestAction extends Action {

     @Override
     public ActionForward execute(ActionMapping mapping, ActionForm form,
       HttpServletRequest request, HttpServletResponse response)
       throws Exception {
      DynaActionForm daf = (DynaActionForm)form;
      String username = (String)daf.get("username");
      Integer age = (Integer)daf.get("age");
      System.out.println("username=" + username);
      System.out.println("age=" + age);
      return mapping.findForward("success");
     }

    }

    jsp页面上可以使用el表达式取出:

    <body>
     用户名称:${dynaForm.map.username }<br>
     年龄:${dynaForm.map.age }<br>
    </body>

  • 相关阅读:
    golang模板语法
    大白话讲解如何给github上项目贡献代码
    markdown 语法汇总
    小程序开发遇到的一些坑
    Python打包上传
    Python虚拟环境设置
    Python 多版本共存之pyenv
    Python读取指定目录下指定后缀文件并保存为docx
    Ubuntu下的OpenResty 安装
    禁止apache显示目录索引的常见方法(apache禁止列目录)
  • 原文地址:https://www.cnblogs.com/jinzhengquan/p/1953849.html
Copyright © 2011-2022 走看看