你可以再每个form里面有set一个参数,再action中取出来,根据你的set的参数,就可以判断是那个form,并且执行那个代码了

解决方案 »

  1.   

    能把所有的记录先保存到arraylist或hashmap中再通过数据库提交?如何实现呢?
      

  2.   

    ///////////////
    需要把多条记录一次性插到数据库中,多条记录插入的是同一个表!
    ///////////////用一个form就行了!!你在formbean里定义
    String[] name = null;
    String[] type = null;保存时取String[] 数组,循环插入就行了!!写多个form是一种绕道不可取的做法!
    而且你那样写行不能实现的,from还要写成不同的名,
    action跳转也要加设置
      

  3.   

    我也遇到了类似的问题,如果form bean里使用了数组,它的那些set ,get 方法还是一样的用吗?
    比如说它的某个
    public void setName(String username){
    //...
    }
    JSP中<html:text property="name"> 的name 与setName怎么个对应?
      

  4.   

    而且如果这个formbean里的项目是动态变化的,即是说可能会根据需要添加name,type或删除指定name,type,这样的话又该怎么做?这样的话用String[] name = null;这样的数组行吗?
      

  5.   

    你可以再每个form里面有set一个参数,再action中取出来,根据你的set的参数,就可以判断是那个form,并且执行那个代码了<html:form method="post" action="testAction.do?XXXXX=XXX" >
      

  6.   

    在页面中定义元素数组不就可以了。
    在ACTION里面得到元素数组,或者取得整个FORM的ROWSET。
    你可以常识使用DAO或者DTO模式开发。
      

  7.   

    为什么不将所用的insert组成一个sql,然后通过一个form提交?你希望点一个button,就提交多个form吗,关注
      

  8.   

    在ActionForm中声明一个Map变量。
    public class MapForm extends ActionForm
    {
    private Map map = null;
    public void setMap(Map map) {
    this.map = map;
    }
    public Map getMap() {
    return this.map;
    }
    同时增加一个属性方法去设置和获取Map中的数据。
    public void setAttribute(String attributeKey, Object attributeValue)
    {
    getMap().put(attributeKey, attributeValue);
    }
    public Object getAttribute(String attributeKey)
    {
    Object keyValue = getMap().get(attributeKey);
    return keyValue;
    }
    这样我们在jsp页面中,我们就可以使用Struts的标签接触这些Map数据。
    <html:text property="attribute(key)"/>
    这样这些数据就可维护啦,这对查询条件较多的情况非常适用,你无需在维护这些查询信息在各个页面的过渡,Struts帮您完成了一切。下面我们就看一下如何用MapForm组织master/detail方式的数据,我们将以一个订单做为样例。1 首先建立一个Form对象,继承MapForm,同时声明主要的属性,如订单编码、定购人等。
    public class OrderForm extends MapForm
    {
    private Integer id;
    private String orderMan;2 我们拟定以Map方式保存采购项信息,同一采购项采用统一前缀,可选择行编码,如row123_ productCode,row123_ productId,row123_ amount等,这样某一采购项信息将被输入到Map中,不同的采购项的前缀不一样,前缀由row+行编码组成,同时编写可获取行编码的函数,这样可取得某一采购项的所有信息,参数rowPrefix为某一字符串,如“row”、“item”等,不包含数字编码信息,同时你可以编写Comparator,进行排序。 
    public Collection getRowIdList(String rowPrefix)
    {
    if (map.isEmpty()) return new ArrayList();
    Collection allRowId = new TreeSet(new RowIdComparator(rowPrefix));
    Iterator allKey = map.keySet().iterator();
    while (allKey.hasNext())
    {
    String key = (String) allKey.next();
    if (key.indexOf(rowPrefix) != -1)
    {
    key = key.substring(0, key.indexOf('_'));
    allRowId.add(key);
    }
    }
    return allRowId;
    }3 在jsp页面中你可以通过jstl,就可以完成采购明细的显示。
    <c:forEach var="rowId" items="${OrderForm.getRowIdList('row')}">
    <tr align="center" id="${rowId}" onclick="clickRow()">
    <td ><html:text property="attribute(${rowId}_productCode)" size="8" onkeydown="fillProductInfoWithKeyDown('${rowId}',this)" /><html:hidden property="attribute(${rowId}_productId)"/> &nbsp;<a href="javascript:selectproduct('${rowId}')">选择</a></td>
    <td ><html:text property="attribute(${rowId}_productQty)" size="8" /> </td>
    <td ><html:text property="attribute(${rowId}_productPrice)" size="8" /></td>
    <td ><html:text property="attribute(${rowId}_productName)" readonly="true" size="16" /></td>
    <td ><html:text property="attribute(${rowId}_productPackaging)" readonly="true" size="12"/></td>
    <td ><html:text property="attribute(${rowId}_productUnit)" size="6" readonly="true" /></td>
    </tr>
    </c:forEach>4 这样Struts帮你完成了所有的信息处理,你需要完成你的保存就可以啦。提示:Map中的数据值默认都是String类型的,如果你想转换成你想要的类型,可以在你的Form编写一个工具方法,完成类型的转换。
    public Map getTypedMap() {
    Map map = this.getMap();
    String keyString = (String) map.get("key");
    Integer keyInteger = new Integer(keyString);
    map.put("key",keyInteger);
    return map;
    }
      

  9.   

    to  xuelei81(阿薛)因为急现在用了一种很笨的方法
    到时会参考你的方法改进1、Map 需要同步吗?
    2、如何添加到数据库中?
      

  10.   

    直接在form中将你的字段名字定义成数组,不要定义多个form,然后在Action中通过数组循环提交道数据库,而且在提交数据库时可以使用AddBatch语句来一次提交,不必多次提交
      

  11.   

    form可以嵌套form的,看一下struts文档就知道了元素名称<html:text property="OuterForm.InnerForm.element"/>
      

  12.   

    好像这样<html:text property="InnerForm.element"/>