轻松使用FormBean,摆脱繁重的FormBean的生成、改写......(lazyBean的使用)

                                                                                 作者:喧海
我们在使用struts的时候免不了生成大量的formBean,当有业务变化的时候还要修改大量的get、set方法,虽然IDE可以帮助生成这些get、set方法,但是数量多的时候也比较麻烦!最近因为工作的需要找到了新版本struts(1.2.7)的一些新加特性,这部分特性可以使你摆脱以前这些烦人的修改。下面我们可以看一些简单代码来了解这个新特性


//form.jsp
//*************************************************************
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ page contentType="text/html; charset=GBK" %>
<html:html>
<head>
<title>
Jsp
</title>
</head>
<body>
<html:form action="dynaAction.do" method="POST">
        编号: <html:text property="custNo"/>
        姓名: <html:text property="custName"/>
        地址: <html:text property="address"/>
        年龄: <html:text property="age"/>
     e-mail:  <html:text property="email"/>
        电话: <html:text property="tel"/>
<html:submit property="submit" value="Submit"/><br>
<html:reset value ="Reset"/>
</html:form>
</body>
</html:html>

jsp页面没有变化,主要变化的是FormBean和ActionBean的使用,我们来看FormBena 的变化


//formbean(dynaActionFm.java)
//*******************************************************************

import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.apache.struts.validator.*;

public class dynaActionFm extends LazyValidatorForm {
 //以前的版本继承ActionForm,现在本例继承了LazyValidatorForm
  public ActionErrors validate(ActionMapping actionMapping,
                               HttpServletRequest httpServletRequest) {
      /** @todo: finish this method, this is just the skeleton.*/
    return null;
  }

  public void reset(ActionMapping actionMapping,
                    HttpServletRequest servletRequest) {
  }
}

//*******************************************************************

在FormBean中省略一切的set、get,如果你愿意连这个文件也可以省略掉,只要在strurs-config.xml加入描述既可(不是get、set的描述)
大家也许在想struts1.1中开始有了DynaActionForm,也可以不用写那么多的set、get,只要在配置文件(struts-config.xml)中加入相应的属性配置也可以啊,我们这里可以连配置文件都不用写了! 具体的类介绍可查阅这里(http://www.niallp.pwp.blueyonder.co.uk/

下面看action的使用

//ActionBean(dynaAction.java)
//*******************************************************************
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.Action;
import org.apache.commons.beanutils.DynaBean;
import java.util.Map;

public class dynaAction
    extends Action {
  public ActionForward execute(ActionMapping actionMapping,
                               ActionForm actionForm,
                               HttpServletRequest servletRequest,
                               HttpServletResponse servletResponse) {
    DynaBean dynaForm = (DynaBean)actionForm;//转换为dynaBean,以前的是ActionForm
    String custNo = (String)dynaForm.get("custNo");
    String custName = (String)dynaForm.get("custName");
    String address   = (String)dynaForm.get("address");   
    //.......do someting
    //原来的使用是form.getXXXXX(),现在是form.get("XXXXX")

    return actionMapping.findForward("listview");//显示页面
  }
}

//*******************************************************************

从上面可以看出来,lazyBean实现了自动映射,还可以自动实现反射
这样的话你的FormBean成为了正在的动态的了,表单增加,在你的Action中就可以使用

还有不同情况、不同方式的使用,具体可以看http://www.niallp.pwp.blueyonder.co.uk/了解

下面附struts-config.xml
//struts-config.xml
//*******************************************************************
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
  <form-beans>
    <form-bean name="dynaActionFm" type="welcome.dynaActionFm" />
  </form-beans>
  <action-mappings>
    <action name="dynaActionFm" path="/dynaAction" scope="request" type="welcome.dynaAction">
      <forward name="listview" path="/listJsp.jsp" />
    </action>
  </action-mappings>
  <message-resources parameter="ApplicationResources" />
  <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
  </plug-in>
</struts-config>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值