Search code examples
jsfajax4jsfjsf-1.2

How to maintain/save row values when generating a new row?


i have the following bean:

public class MyBean {

public ArrayList<ReportRow> getReportRows()
    {
        return reportRows;
    }



    private final ArrayList<ReportRow> reportRows = 
        new ArrayList<ReportRow>(Arrays.asList(

                new ReportRow("","")
    ));

    public ArrayList<ReportRow> getOrderList() {

        return reportRows;

    }

    public String addAction() {

        ReportRow row = new ReportRow("", "");
        reportRows.add(row);
        return null;
    }



    public class ReportRow{

        String reportColumnName;
        String reportColumnDesc;

        public ReportRow(String reportColumnName,String reportColumnDesc) {

            this.reportColumnName=reportColumnName;
            this.reportColumnDesc=reportColumnDesc;
        }

        public String getReportColumnName()
        {
            return reportColumnName;
        }

        public void setReportColumnName(String reportColumnName)
        {
            this.reportColumnName = reportColumnName;
        }

        public String getReportColumnDesc()
        {
            return reportColumnDesc;
        }

        public void setReportColumnDesc(String reportColumnDesc)
        {
            this.reportColumnDesc = reportColumnDesc;
        }

    }

}

jsf page:

<t:dataTable value="#{myBean.reportRows}" var="o"
            id="reportColumnsTable" styleClass="standardTable" headerClass="standardTable_Header"
            rowStyleClass="#{myBean.viewDelayedRsd}"
            >

            <h:column>

            <t:outputLabel value="Column name:"></t:outputLabel>
            <t:inputText id="ReportColumnName" value="#{o.reportColumnName}" required="true">
            </t:inputText>

            </h:column>

            <h:column>

            <t:outputLabel value="Column Desc:"></t:outputLabel>
            <t:inputText id="ReportColumnDesc" value="#{o.reportColumnDesc}" >

            </t:inputText>

            </h:column>

            <h:column>

            <h:outputLink value="#add"><h:outputText value="Add"/>
                        <a4j:support ajaxSingle="true" event="onclick" action="#{rprtBean.addAction}"
                        reRender="reportColumnsTable,msgPanel" />                       
            </h:outputLink>

            </h:column>

            </t:dataTable>

problem is that when i click on add, it generates a new row, and clear the old one, and i want to maintain the values of old row, any ideas ?


Solution

  • i just used the a4j command link and everything worked fine.