`
jiaoxujin
  • 浏览: 63383 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

小日本是这样处理LIST表单更新/插入的

阅读更多
在JSP中 每个字段对应一个数组。
<input name = "masterName[0]" .../>   <input name = "familyId[0]" .../>
<input name = "masterName[1]" .../>   <input name = "familyId[1]" .../>
<input name = "masterName[2]" .../>   <input name = "familyId[2]" .../>
在ActionForm中
定义一个 List list;
没有与数组名对应的变量
只有对应的方法
  private void setMasterName(String[] masterName) {
    Map map = new HashMap();
    for (int i = 0; i < masterName.length(); i++) {
      map.put("masterName[i]", masterName[i]);
      list.add(map);
    } 
  }
好象写错了,明天去看看小日本的代码

package jp.co.nec.cw.portal.form;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import jp.co.nec.cw.portal.common.form.ZPBaseForm;
public class YU011191Form extends ZPBaseForm {
    /** List */
    List <Map<String, Object>> siireList;

   /**
    * 从List中取出所有tenpoCode值放入数组
    */
    public String[] getTenpoCode() {
        String[] tenpoCode = new String[siireList.size()];
        for(int i=0;i<siireList.size();i++){
            Map m = (Map)siireList.get(i);
            tenpoCode[i] = "";
            if (m.get("tenpoCode") != null) {
                tenpoCode[i] = m.get("tenpoCode").toString();
            }
        }
       
        return tenpoCode;
    }
  
   /**
    * 从List中取出指定"记录"中的tenpoCode值
    */
    public String getTenpoCode(int index) {
        Map m = (Map)siireList.get(index);
        String tenpoCode = "";
        if (m.get("tenpoCode") != null) {
            tenpoCode = m.get("tenpoCode").toString();
        }
       
        return tenpoCode;
    }

   /**
    * 将页面对应的数组tenpoCode中的所有值放入List
    */
    public void setTenpoCode(String[] tenpoCode) {
        Map<String, Object> m = null;
        for(int i=0;i<tenpoCode.length;i++){
            if (i < siireList.size()) {
                //此时取出来的Map也许已经包含其它"字段"
                m = (Map)siireList.get(i);
            }
            if (m == null) {
                m = new HashMap<String, Object>();
            }
            //将tenpoCode的值添加到map中
            m.put("tenpoCode", tenpoCode[i]);
            if (i < siireList.size()) {
                //替换对应"记录"
                siireList.set(i,m);
            } else {
                siireList.add(m);
            }
            m = null;
        }
    }

   /**
    * 将页面对应的指定"记录"的tenpoCode的值放入List
    */
    public void setTenpoCode(int index, String tenpoCode) {
        Map<String, Object> m = null;
        if (index < siireList.size()) {
            m = (Map)siireList.get(index);
        }
        if (m == null) {
            m = new HashMap<String, Object> ();
        }
        m.put("tenpoCode", tenpoCode);
        if (index < siireList.size()) {
            siireList.set(index,m);
        } else {
            siireList.add(m);
        }
    }

}

JSP部分:

<%
  YU011191Form yu011191 = (YU011191Form)session.getAttribute("YU011191Form");
  List list = yu011191.getSiireList();
  Map map = new HashMap();
  String[] strTenpoCode = null;
  if (list != null) {
    strTenpoCode = yu011191.getTenpoCode();
  }
  /* 行の色 */
  String line = new String();
  for (int i = 0; i < list.size(); i++) {
    if (i % 2 == 0) {
      /* 偶数 */
      line = "c-line1";
    } else {
      /* 奇数 */
      line = "c-line2";
    }
%>
<tr class="<%= line %>">
  <td align="left" nowrap="nowrap">
  <%= (strTenpoCode[i] != null && strTenpoCode[i].trim().length() != 0) ?
    CmnUtil.paddingZero(strTenpoCode[i], 3) : "&nbsp;" %>
  </td>
  <input type="hidden" name="<%= "tenpoCode[" + i + "]" %>" value="<%= strTenpoCode[i] %>">
</tr>
<%
  }
%>

至于当页面数据(数组)提交时,对应的Servlet Action (控制层) 怎么就知道调用ActionForm里的
public void setTenpoCode(String[] tenpoCode) 方法呢?
还不清楚,再去研究研究,希望小日本没有把基类代码给藏起来.


分享到:
评论

相关推荐

    LINQ 数据的更新,插入、删除、批量更新

    本篇文章将详细探讨如何使用LINQ进行数据的更新、插入、删除以及批量更新操作,并特别关注在多人同时修改同一条数据时如何处理冲突,以及如何通过错误处理策略来确保更新的连续性。 首先,我们来看如何使用LINQ进行...

    struts1.2 from表单提交包含list的对象

    在Struts1.2中处理表单提交,特别是当表单数据包含列表对象时,需要理解一些核心概念和技术。这篇博客文章可能详细探讨了如何在Struts1.2中处理这类情况。 首先,让我们来了解Struts1.2中的表单提交流程。当用户在...

    ListCtrl中插入图片,按钮,右键菜单,Edit控件等

    本教程将详细讲解如何在ListCtrl中插入图片、按钮、颜色、Edit控件,以及添加右键菜单和气泡提示,帮助开发者更好地利用ListCtrl进行界面设计。 1. **插入图片** 在ListCtrl中插入图片通常通过设置LVS_ICON或LVS_...

    C# 批量插入和更新数据

    在数据库应用开发中,尤其是在处理大量数据的时候,批量插入和更新数据是提高效率的关键技术之一。传统的单条插入或更新方式在面对大数据量时,不仅耗时较长,而且可能会导致资源过度消耗,甚至引发性能瓶颈。因此,...

    MongoDB 批量插入及更新

    因此,MongoDB提供了批量操作的功能,能够一次性处理多个文档的插入或更新,显著提高操作效率。 #### 三、MongoDB批量操作实现方法 ##### 3.1 使用MongoDB.Driver库 在.NET Core中,可以通过`MongoDB.Driver`库来...

    ListCtrl控件中插入进度条类CProcessList

    标题中的“ListCtrl控件中插入进度条类CProcessList”指的是在`ListCtrl`中嵌入一个进度条控件,以实时显示某些任务或操作的进度。这在很多应用中非常实用,比如文件传输、资源管理器等,用户可以直观地看到进程的...

    vc++ ListCtrl的Items插入EditBox或者ComboContro

    为了在ListCtrl的特定项中插入一个编辑框或组合框,我们需要在响应鼠标点击事件,如OnLButtonDown函数,进行处理。 1. **插入EditBox**:EditBox控件提供了一种单行文本输入的方式。在ListCtrl中插入EditBox,我们...

    Mybatis Plus 自定义批量插入或批量更新(根据唯一索引)

    在实际的项目开发中,批量插入和批量更新是常见的数据处理场景,尤其是在处理大量数据时,能够显著提升效率。本文将深入探讨如何在 Mybatis Plus 中自定义批量插入和批量更新,并根据唯一索引来确保数据的唯一性。 ...

    java中set、list和map的使用方法实例

    // java中对象容器主要有Set,List和Map三个接口类。 // 迭代器(Iterator)模式,又叫做游标(Cursor)模式。 // GOF给出的定义为:提供一种方法访问一个容器(container)对象中的各个元素, // 而又不需暴露该...

    list Control实现单元格编辑与插入Combo Box

    这篇Blog的工程补充。 http://blog.csdn.net/bizhu12/article/details/6570209# 主要有一点细节作者没有提到: ListCtrl控件的属性里,View要改成Report。

    Mybatis 3+Mysql 实现批量插入

    相比于单条插入,批量插入能够显著提升数据处理效率,减少数据库I/O操作,从而提高整体性能。本文将深入探讨如何利用MyBatis框架结合MySQL数据库实现批量插入功能,包括其原理、配置、代码实现以及优化策略。 ### ...

    在vector和list中插入数据

    本文将深入探讨在`vector`和`list`中插入数据的方法、性能差异以及适用场景。 **一、std::vector** `std::vector`是一个动态数组,提供了随机访问的能力。它的插入操作主要有以下几种: 1. **在末尾插入元素**: `...

    VC6 自制ListCtrl类 解决闪烁

    然而,默认的ListCtrl在插入或更新数据时可能会出现闪烁现象,这可能对用户体验造成不良影响。为了解决这个问题,我们可以封装自定义的ListCtrl类,优化其内部处理机制,从而消除闪烁。 首先,我们需要了解ListCtrl...

    链表的头插入和尾插入

    这个函数通常会接收新的节点数据和当前链表的头节点作为参数,然后创建一个新的节点,将新节点的next指针指向头节点,并将头节点的前一个指针(如果有的话)指向新节点,最后更新链表的头节点为新插入的节点。...

    在ListCtrl列表控件中添加edit和combo

    在具体实现这些函数时,需要注意控件的位置和大小调整,以及在用户完成编辑或选择后更新`ListCtrl`中的数据。此外,还需要处理各种可能的异常情况,确保控件的正确创建、显示和销毁。 通过这样的封装,我们可以轻松...

    listctrl自动换行.docx

    ### ListCtrl自动换行知识点详解 #### 一、概述 在Windows编程中,`ListCtrl`(列表控件)是一种非常...无论哪种方法,都需要确保正确处理控件的创建、列的插入以及数据的填充等步骤,以确保自动换行功能的正常工作。

    mybatispuls3.5使用批量插入

    MyBatisPlus是MyBatis框架的一个扩展,它提供了更多的便捷功能,包括简化SQL操作、自动填充 CRUD(创建、读取、更新、删除)操作等。在MyBatisPlus 3.5版本中,批量插入功能是其核心优化之一,这对于大数据量的操作...

    ListCtrl插入Gif动态图标

    这个“ListCtrl插入Gif动态图标”的话题涉及到如何在CListCtrl中显示GIF动画,这在一些应用程序中可以增加交互性和视觉吸引力。 首先,我们需要了解CListCtrl的基本用法。CListCtrl是MFC(Microsoft Foundation ...

    ImageList加载BMP在ListCtrl中显示的Demo

    在Windows编程中,ListView(ListCtrl)控件是一种常见的用户界面元素,用于显示列式数据。为了提升用户体验,我们常常需要在ListView中显示图标或小图像。这时,ImageList组件就派上了用场。本Demo "ImageList加载...

    c++实现顺序表的插入.md

    3. **插入新元素**:当所有必要的元素都向后移动之后,即可将新元素插入到指定的位置,并更新顺序表的长度。 #### 2.2 C++ 实现代码详解 以下是一个具体的C++代码实现示例: ```cpp #include using namespace ...

Global site tag (gtag.js) - Google Analytics