動的自己増加テーブルrich:dataTable


ページ
<rich:dataTable id="tb1" value="#{tbtest.tb}" var="tbmethod"
      width="600px">
      <f:facet name="header">
       <rich:columnGroup>
        <rich:column colspan="2">
         <h:outputText value=" "></h:outputText>
        </rich:column>
       </rich:columnGroup>
      </f:facet>
      <rich:column>
       <f:facet name="header">
        <h:outputText value=" "></h:outputText>
       </f:facet>
       <a4j:commandLink value="#{tbmethod.value1}" reRender="pp1"
        action="#{tbdb.selValue}" style="width:250px">
        <a4j:actionparam name="pa1" value="#{tbmethod.id}"
         assignTo="#{tbdb.id}" />
       </a4j:commandLink>
      </rich:column>
      <rich:column>
       <f:facet name="header">
        <h:outputText value=" "></h:outputText>
       </f:facet>
       <h:outputText value="#{tbmethod.value2}" escape="false" style="width:250px"></h:outputText>
      </rich:column>
     </rich:dataTable>

 
JAvaファイル
private List<SetAllInfo> tb;

Map maps = FacesContext.getCurrentInstance().getExternalContext()
    .getSessionMap();

public TestTest() ...{
}

public void Add(SetAllInfo setinfo) ...{
   tb = new ArrayList<SetAllInfo>();
   List kk = (ArrayList) maps.get("xiaoyi");
   if (kk != null) ...{
    tb = kk;
   }
   if("".equals(setinfo.getValue1()))
   ...{
    setinfo.setValue1(" ");
   }
   if("".equals(setinfo.getValue2()))
   ...{
    setinfo.setValue2(" ");
   }
   tb.add(setinfo);
   maps.put("xiaoyi", tb);
}

public void del(long ids) ...{
   tb = (ArrayList) maps.get("xiaoyi");
   for (int i = 0; i < tb.size(); i++) ...{
    SetAllInfo ss = tb.get(i);
    if (ids == ss.getId()) ...{
     tb.remove(i);
     maps.put("xiaoyi", tb);
     break;
    }
   }
}

public void update(SetAllInfo info) ...{
   List<SetAllInfo> tbtemp = (ArrayList) maps.get("xiaoyi");
   for (int i = 0; i < tbtemp.size(); i++) ...{
    SetAllInfo sai = tbtemp.get(i);
    if (info.getId() == sai.getId()) ...{
     // tb.remove(i);
     // tb.add(i, info);
     tbtemp.set(i, info);
     tb = tbtemp;
     // tb.addAll(tbtemp);
     // tb=tbtemp;
     maps.put("xiaoyi", tb);
     break;
    }
   }
}

public SetAllInfo selElem(long flagRow) ...{
   SetAllInfo ss = new SetAllInfo();
   tb = new ArrayList<SetAllInfo>();
   List lis = (ArrayList) maps.get("xiaoyi");
   if (lis != null) ...{
    tb = lis;
    for (int i = 0; i < tb.size(); i++) ...{
     ss = tb.get(i);
     if (flagRow == ss.getId()) ...{
      break;
     }
    }
   }
   return ss;
}

public List<SetAllInfo> getTb() ...{
   tb = (ArrayList) maps.get("xiaoyi");
   return tb;
}

public void setTb(List<SetAllInfo> tb) ...{
   this.tb = tb;
}