Struts接收表单提交的多行数据

/**
* 扩展ArrayList类:重写get方法用来接收多行数据时防止下标越界
* @author Administrator
*
*/
public class AutoArrayList extends ArrayList {

       private Class itemClass;
       public AutoArrayList(Class itemClass){
       this.itemClass=itemClass;
       }
      
       public Object get(int index){
       try{
       while(index>=size()){
           add(itemClass.newInstance());
       }
       }catch(Exception e){}
       return super.get(index);
       }
}
------------------------------------------------------
/**
*ActionForm:  接收多行TCompareField数据tcompareFieldList
*/
public class TCompareFieldListForm extends ActionForm{

    private List comparefields = new AutoArrayList(TCompareFieldForm.class);
   
    public List getComparefields(){
         return this.comparefields;
    }
    public void setComparefields(List comparefields){
        this.comparefields= comparefields;
    }
   
}
-----------------------------------------------------
/**
* ActionForm:接收TCompareField数据
*/
public class TCompareFieldForm extends ActionForm implements java.io.Serializable
{

    // Fields   

    private Long id;
    private Long compareId;
    private String fieldDescribe;
    private Long fieldLength;
    private String fieldType;
    private Long dictionaryId;
    private String fieldName;
    private Long targetRowId;
    private String compareMode;
    private String isUnique;
    private String isSimpleOutput;
    private String isDetailOutput;
    private String isInputSource;
    private Long seq;
    private String secretKey;
    private Long createBy;
    private Date createTime;
    private Long lastUpdateUser;
    private Date lastUpdateTime;

    public Long getId()
    {
        return id;
    }
    //getter&setter......
}
-----------------------------------------------------

在action中获取JSP表单提交的数据:
        //获取表单提交数据
        TCompareFieldListForm listForm = (TCompareFieldListForm)form;
        List<TCompareFieldForm> comparefields = listForm.getComparefields();

-----------------------------------------------------
JSP表单:表单的数据是一个数据集合list,注意字段的命名使用数组的方式--comparefields[<%=i%>].targetRowId ,数组名要和TCompareFieldListForm 中的变量名对应,数组的属性要和TCompareFieldForm中的变量对应

<form action="">
<%
                    for(int i=0;i<compareRelateCheckList.size();i++){
                    VCompareInputSourceCheck inputSource=compareRelateCheckList.get(i);
                 %>
                 <tr class="tableRow" onmouseover="this.style.background='#D6E8F8';" onmouseout="this.style.background='#ffffff'">
                   <td align="center" width="20%">
                          <input type="hidden" id="comparefields[<%=i%>].targetRowId" name="comparefields[<%=i%>].targetRowId" value="<%=inputSource.getTargetRowId()%>">
                          <input type="hidden" id="comparefields[<%=i%>].fieldDescribe" name="comparefields[<%=i%>].fieldDescribe" value="<%=inputSource.getFieldDescribe()%>">
                          <%=inputSource.getFieldDescribe()%>
                   </td>
  </tr>
                 <%}%>
</form>

猜你喜欢

转载自premier9527.iteye.com/blog/1503322