<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-39  評論-33  文章-0  trackbacks-0

    如何實現表單一次上傳多表數據并更新到數據庫

    胡立新

    newxy的標簽<nbean:formBean name=”…” sql=”……”/>會經查詢語句得到一formBeanformBean中含有記錄集。如果sql語句是聯表查詢,formBean中會有來自多個表的數據。

    如果用戶在<nhtml:form …>…</nhtml:form>標簽產生的表單中修改了數據,如何將這些修改后的多表數據更新到數據庫中。可以利用newxy的標簽<nlogic:action1/><nlogic:action2/>及標簽<nhtml:buttons/><nhtml:button/>來實現。有兩種方法。

    方法一:將<nlogic:action1/>換成<nlogic:action2/>,其path屬性是strutsaction配置的path元素值,通常帶有“.do" 這樣可在后臺Strutsaction中處理。

            BaseDAO baseDao=new BaseDAO();

            DynaDto dto=(DynaDto)formBean.getDto();

            //保存第一個表

            dto.set_table(“table1”);

            baseDao.update(dto);

            //保存第二個表

            dto.set_table(“table2”);

            baseDao.update(dto);

            //保存第三個表

            dto.set_table(“table3”);

            baseDao.update(dto);

       

    如果查詢結果使用了別名,如select a.field1 as f1,... from table1 a,...,則在update前應作處理,如下:

            dto.set_table(“table1”);

            dto.set('field1',dto.get('f1'));

            baseDao.update(dto);

    前臺jsp頁面類似如下:

            <nlogic:action2 id=”act1” path="/myAction.do"/>

            <nbean:formBean name="form1" sql="..."/>

            <nhtml:form action="" formName="form1">

              <html:hidden property="_table" value="table1"/>

              ......

            </nhtml:form>

            <div><nhtml:buttons actionId="act1"/></div>

    前臺表單中的_table屬性被忽略。如果表單某屬性是table1字段也是table2字段,如聯表查詢時的id,這個id就會更新到table1table2中。

     

    方法二:讓<nlogic:action1/>更新或插入表table1,在jsp頁面上鑲入java腳本更新或插入其它表。但要理解<nlogic:action1/>執行動作的條件。

    <nlogic:action1/>執行動作的條件是:訪問jsp頁面的參數含有_actionId_formName,且值分別等于<nlogic:action1/>id值、formName值。這個<nlogic:action1/>"update""remove"還是其它動作要看參數method的值是什么。java腳本執行條件應與<nlogic:action1/>的條件相同。jsp頁面應類似這樣的:

            <nlogic:action1 id="act1" formName="form1"/>

            <%

              String _actionId=request.getParameter("_actionId");

              String _formName=request.getParameter("_formName");

              if("act1".equals(_actionId) && "form1".equals(_formName)){

                  net.newxy.struts_faces.DynaFormBean formBean=(net.newxy.struts_faces.DynaFormBean)session.getAttribute("form1");

                  BaseDAO baseDao=new BaseDAO();

                  DynaDto dto=(DynaDto)formBean.getDto();

     

                  //保存第二個表 第一個table1由標簽更新了。

                  dto.set_table(“table2”);

                  baseDao.update(dto);

                  //保存第三個表

                  dto.set_table(“table3”);

                  baseDao.update(dto);       

              }           

            %>

            <nbean:formBean name="form1" sql="..."/>

            <nhtml:form action="/manager/user/index.jsp" formName="form1">

              <html:hidden property="_table" value="table1"/>

              ......

            </nhtml:form>

            <div><nhtml:buttons actionId="act1"/></div>

           

    如果要在一個事務中更新多表,則應使用方法一。如果利用newxy實現事務,可參看newxy的技術文檔有關事務部分。

     

    newxy新坐標技術網站:http://www.newxy.net

     

    posted on 2007-04-09 23:39 newxy新坐標 閱讀(1895) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲成a人片在线观| 亚洲午夜av影院| 国产在线观看xxxx免费| 亚洲jizzjizz在线播放久| 1000部无遮挡拍拍拍免费视频观看| 亚洲国产AV一区二区三区四区| 四虎永久免费地址在线观看| 1000部啪啪毛片免费看| 黄 色一级 成 人网站免费| 久久亚洲成a人片| 亚洲AⅤ永久无码精品AA| a毛片在线免费观看| 大桥未久亚洲无av码在线| 亚洲日韩欧洲无码av夜夜摸| 久久伊人免费视频| 一级特黄录像免费播放中文版| 亚洲一区二区三区丝袜| 亚洲综合国产一区二区三区| 114一级毛片免费| 在线看无码的免费网站| 无码日韩精品一区二区三区免费| 亚洲不卡1卡2卡三卡2021麻豆| 免费国产不卡午夜福在线| 影音先锋在线免费观看| 国产高清视频免费在线观看| 老司机午夜在线视频免费观| 亚洲精品线在线观看| 国产美女无遮挡免费视频网站 | 亚洲日韩国产精品第一页一区| 亚洲成?Ⅴ人在线观看无码| 亚洲成a人片在线观看日本麻豆 | 亚洲免费视频观看| 亚洲无限乱码一二三四区| 久久精品国产亚洲av日韩| 免费观看国产精品| 免费人成网站7777视频| 免费一级肉体全黄毛片| 亚洲精品第一国产综合精品99| 亚洲区不卡顿区在线观看| 77777亚洲午夜久久多人| 亚洲乱码日产一区三区|