Use DataModel instead of direct List.

2009/6/13 Samb Green <[email protected]>

> Hi all,
>
>  I have a problem with  selectBooleanCheckbox in a datatable. I want to
> check a number of rows and delete them in the backing bean. However the rows
> marked as checked in the backing bean are different than those checked on
> the UI. However the number of rows checked is the same, it just checks wrong
> rows in the backing bean. Can anybody help please. I googled and seached the
> mailiong archiove but did not find any similar problem. Here is the code
> source: (I am using myfaces 1.1.5, tomahawk 1.1.7, jboss 4.0.3SP1)
>
> Th JSP:
>
> <%@ page language="java" contentType="text/html; charset=ISO-8859-1"%>
> <%@ include  file="/jsps/inc/taglibs.inc"%>
> <html>
> <body>
> <f:view>
>     <h:form styleClass="inputForm">
>                <t:dataTable id="precptT" renderedIfEmpty="false"
>
>
> columnClasses="column-left,column-left,column-left,column-left,column-left,column-right"
>                  rowClasses="row-grey,row-none"
>                  styleClass="table"
>                  value="#{PrecBean.precomptes}"
>                  var="precompte">
>
>             <h:column>
>                 <h:selectBooleanCheckbox id="aPrecpt"
> value="#{precompte.checked}"/>
>             </h:column>
>
>             <h:column>
>                 <f:facet name="header">
>                     <h:outputText value="No Mat" />
>                 </f:facet>
>                 <h:outputText value="#{precompte.noMat}" />
>             </h:column>
>             <h:column>
>                 <f:facet name="header">
>                     <h:outputText value="Name" />
>                 </f:facet>
>                 <h:outputText value="#{precompte.name}" />
>             </h:column>
>
>             <h:column>
>                 <f:facet name="header">
>                     <h:outputText value="Amount" />
>                 </f:facet>
>                 <h:outputText id="credLEC" value="#{precompte.amount}">
>                     <f:convertNumber pattern="##,###" />
>                 </h:outputText>
>             </h:column>
>           </t:dataTable>
>
>            <br>
>
>            <h:commandButton id="ajout"
>                rendered="#{DemORIBean.nbPrecomptes != 0}"
>                action="#{PrecBean.deleteSelections}"
>                value="-"/>
>     </h:form>
> </f:view>
> </body>
> </html>
>
>
> The backing bean:
>
>
> public class PrecompteBean implements Serializable
> {
>     private static final long serialVersionUID = -1;
>     private List<Precompte> precomptes;
>
>        public List<Precompte> getPrecomptes()
>        {
>             // Get data from database
>             return precomptes;
>        }
>
>        public void setPrecomptes(List<Precompte>  precomptes)
>        {
>             this.precomptes = precomptes;
>        }
>
>        // Method to delete the selected row.
>     public String deleteSelections()
>     {
>         for( Precompte prcpt: this.precomptes)
>         {
>             if( prcpt.isChecked())
>             {
>                 // ... delete
>             }
>         }
>         return null;
>     }
> }
>
>
> The Precompte value object to hold data from each row of the database table
>
> public class Precompte implements Comparable, Serializable
> {
>          private static final long serialVersionUID = -1L;
>          private boolean checked;
>          // ... declarations of other properties
>
>
>        /**
>         * @return Returns the checked.
>         */
>       public boolean isChecked()
>       {
>            return this.checked;
>       }
>
>     /**
>      * @param checked The checked to set.
>      */
>     public void setChecked( boolean checked)
>     {
>         this.checked = checked;
>     }
>
>      // .... implementation of other getters and setters
> }
>
>
>
>
>
>
>
>

Reply via email to