空間站

          北極心空

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks
          ???????????????????????????????????????????????????????????????????????????????作者:喧海
          我們在使用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" "<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>



          Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=469646

          主站蜘蛛池模板: 开原市| 锦州市| 永城市| 五台县| 乌兰察布市| 图们市| 宜兰市| 绥宁县| 庄浪县| 济源市| 镇原县| 宁晋县| 柳林县| 胶州市| 滕州市| 芜湖市| 乾安县| 灵山县| 徐州市| 屏东市| 长治县| 肥乡县| 黔江区| 蒙城县| 托克逊县| 曲水县| 栾川县| 彰武县| 宜川县| 绥棱县| 宁远县| 敖汉旗| 广饶县| 华坪县| 涿鹿县| 神池县| 岳阳市| 保靖县| 剑川县| 酒泉市| 台中县|