ActionForm DynamActionForm LazyValidatorForm DynamValidateForm 使用

来源:互联网 发布:sql server 编程 编辑:程序博客网 时间:2024/05/21 07:10

1) ActionForm
   org.apache.struts.action.ActionForm
   获取表单数据的public 属性
(2) DynamActionForm
   org.apache.struts.action
   为了解决ActionForm膨胀而引入的ActionForm,不需要创建多余的formBean ,只需要子配置文件里面配置属性就可以了
(3) LazyValidatorForm
   org.apache.struts.validator
   struts 中LazyValidatorForm特别适用于FormBean中并不包含POJO商业对象所有属性的情况,
   因为通常项目里都属于这种情况,所以springside默认使用lazyValidatorForm.
   注意的地方就是Action 的validate 属性要改为false  validate="false".
   LazyValidatorForm 既不要创建多余的FormBen 也不需要配置里配置属性,就可以拿到页面表单的数据
(4)DynamValidateForm
   基于服务器的验证,对于一般的验证可以在页面用js 进行验证,如果是系统安全性要求高,则用服务器端验证。(
  
eg:

/**login.jsp*******************************************************************/

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <% String path = request.getContextPath(); %>
    <title>login</title>
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
  </head>
  <body>
  <!--  普通ActionForm
  <form name="form1" method="post" action="<%=path%>/login.do?method=login">
   姓名:<input type="text" name="name" value="${userForm.name}"/> </br>
   年龄:<input type="text" name="age" value="${userForm.age}"/> </br>
   <input type="submit" value="普通ActionForm提交">
  </form>-->
  </hr>
  <!-- 动态ActionForm 是为了防止普通ActionForm膨胀
  <form name="form1" method="post" action="<%=path%>/login.do?method=login">
   姓名:<input type="text" name="name" value="${userForm.map.name}"/> </br>  <!--从map 里面去取-->
   年龄:<input type="text" name="age" value="${userForm.map.age}"/> </br>
   <input type="submit" value="动态ActionForm提交">
  </form>-->
  <!--懒惰的ActionForm -->
  <form name="form1" method="post" action="<%=path%>/login.do?method=login">
    姓名:<input type="text" name="name" value=""/> </br>
   <input type="submit" value="懒惰ActionForm提交">
  </form>
  </body>
</html>

 

/*********UserForm ******************************************************************/

package cn.com.chenlly.ssh.forms;

import org.apache.struts.action.ActionForm;

/**
 * @ Class User.java
 * @ Description 
 * @ Company OpenData
 * @ Author Chenlly E-mail: Chenlly99@Gmail.com
 * @ Version 1.0
 * @ Date Dec 20, 2009
 */
public class UserForm extends ActionForm {

 private String name;

 private Integer age;

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public Integer getAge() {
  return age;
 }

 public void setAge(Integer age) {
  this.age = age;
 }
}

/******struts-config.xml************************************************************/

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
        "http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>
 <form-beans>
  <!-- 普通的ActionForm
  <form-bean name="guserForm" type="cn.com.chenlly.ssh.forms.UserForm"/> -->
  <!-- 动态ActionForm 
  <form-bean name="userForm" type="org.apache.struts.action.DynaActionForm">
    <form-property name="name" type="java.lang.String"/><!-- 配置其属性-->
    <form-property name="age" type="java.lang.Double"/>
  </form-bean>-->
    <!-- 懒惰ActionForm-->
  <form-bean name="userForm" type="org.apache.struts.validator.LazyValidatorForm"/>
 </form-beans>
 
 <!-- 登录 -->
 <action-mappings>
  <action name="userForm" path="/login"  scope="request"
   parameter="method" type="cn.com.chenlly.ssh.actions.LoginAction"  validate="false">
    <forward name="login" path="/login.jsp"/>
  </action>
 </action-mappings>
</struts-config>

 

/***LoginAction ***************************************************************/

package cn.com.chenlly.ssh.actions;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.actions.DispatchAction;
import org.apache.struts.validator.LazyValidatorForm;

import cn.com.chenlly.ssh.forms.UserForm;

/**
 * @ Class LoginAction.java
 * @ Description 
 * @ Company OpenData
 * @ Author Chenlly E-mail: Chenlly99@Gmail.com
 * @ Version 1.0
 * @ Date Dec 20, 2009
 */
public class LoginAction extends DispatchAction  {
 
 public ActionForward login(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response){
  /*普通ActionForm
  UserForm gUserForm = (UserForm) form;
   */
  /*动态ActionForm
  DynaActionForm dUserForm = (DynaActionForm) form;
  */
  /*懒惰的ActionForm*/
  LazyValidatorForm lUserForm = (LazyValidatorForm) form;
  //直接取到表单的值,不需要创建formBean 和配置属性
  lUserForm.get("name");
  System.out.println("name:"+lUserForm.get("name"));
  return mapping.findForward("login");
 }
}

原创粉丝点击