Cannot add new row to rich:dataTable after a search and add
mikjall77 Jun 29, 2011 10:33 AMHaving problems adding new data from a search function to a rich:dataTable. In its current state, it only shows one result at a time after clicking the "Add" button. Using JBoss 4.2.2.GA, RichFaces 3.3.3, Seam 2.1.2, JSF 1.2
My xhtml that includes the "Add" button and rich:dataTable
<ui:decorate template="/layout/ButtonVerticalDisplay.xhtml">
<ui:param
name="label"
value=" " />
<h:commandButton
id="search"
value="#{messages['Add']}"
action="BullReport.xhtml" />
</ui:decorate>
<rich:panel
width="1000"
id="RP_infoReportDataList"
rendered="#{((!empty infoDataList.infoData.name and
!empty infoDataList.infoData.id.infoCode) or
(!empty infoDataList.infoData.id.infoCode and
!empty infoDataList.infoData.id.registrationNumber) or
(!empty infoDataList.infoData.name and
!empty infoDataList.infoData.id.registrationNumber))
and !empty infoDataList.singleResult }">
<h:form id="formInfoReportResults">
<rich:dataTable
id="infoReportTable"
width="980"
cellpadding="0"
cellspacing="0"
border="0"
value="#{infoReportList.addedInfoList}"
var="report"
rowKeyVar="rowNum">
<f:facet name="header">
<rich:columnGroup>
<rich:column>
<h:outputText value="#{messages['Compare']}" />
</rich:column>
<rich:column>
<h:outputText value="#{messages['Remove']}" />
</rich:column>
<rich:column>
<h:outputText value="#{messages['RegistrationNumber']}" />
</rich:column>
<rich:column>
<h:outputText value="#{messages['Name']}" />
</rich:column>
<rich:column>
<h:outputText value="#{messages['InfoCode']}" />
</rich:column>
</rich:columnGroup>
</f:facet>
<rich:columnGroup>
<rich:column style="text-align: center">
<h:selectBooleanCheckbox />
</rich:column>
<rich:column style="text-align: center">
<h:selectBooleanCheckbox />
</rich:column>
<rich:column width="75" style="text-align: center">
<h:outputText value="#{report.id.registrationNumber}" />
</rich:column>
<rich:column width="75" style="text-align: center">
<h:outputText value="#{report.id.infoCode}" />
</rich:column>
<rich:column width="75" style="text-align: left">
<h:outputText value="#{report.name}" />
</rich:column>
</rich:columnGroup>
</rich:dataTable>
My Bean
@Name("infoReportList")
public class InfoReportList extends EntityQuery<InfoData>
{
/**
*
*/
private static final long serialVersionUID = 1L;
private InfoData infoData;
private List<IncludedInfoData> addedInfoList;
private InfoDataList infoDataList = new InfoDataList();
private static final String EJBQL = "Select infoData From InfoData infoData";
public InfoReportList ()
{
addedInfoList = new ArrayList<IncludedInfoData>();
infoData = new InfoData();
infoData.setId(new InfoDataId());
setEjbql(EJBQL);
setMaxResults(Integer.valueOf(250));
}
public InfoData getInfoData()
{
return infoData;
}
public void setInfoData(InfoData infoData) {
this.infoData = infoData;
}
public InfoDataList getInfoDataList()
{
return infoDataList;
}
public void setInfoDataList(InfoDataList infoDataList)
{
this.infoDataList = infoDataList;
}
public void setAddedInfoList(List<IncludedInfoData> addedInfoList)
{
this.addedInfoList = addedInfoList;
}
public List<IncludedInfoData> getAddedInfoList()
{
if(addedInfoList.isEmpty())
{
int i = 0;
while (i < infoDataList.getResultList().size())
{
InfoData selectedInfos = (InfoData)infoDataList.getResultList().get(i);
IncludedInfoData includedInfo = new IncludedInfoData(selectedInfos);
addedInfoList.add(includedInfo);
i++;
}
for(Iterator<IncludedInfoData> iterator = addedInfoList.iterator(); iterator.hasNext();)
{
IncludedInfoData includedIterator = (IncludedInfoData)iterator.next();
List<InfoData> tempList = getResultList();
int j = 0;
while (j < tempList.size())
{
InfoData infoDataIterator = (InfoData)tempList.get(j);
if(infoDataIterator.getId().getBreed()
.equals(includedIterator.getId().getName())
&& infoDataIterator.getId().getRegistrationNumber()
.equals(includedIterator.getId().getRegistrationNumber())
&& infoDataIterator.getId().getInfoCode()
.equals(infoDataIterator.getId().getInfoCode()))
{
addedInfoList.add(includedIterator);
}
j++;
}
}
}
return addedInfoList;
}
}