>From javadoc of ListView

 * <p>
 * <strong>WARNING:</strong> though you can nest ListViews within Forms,
you HAVE to set the
 * setReuseItems property to true in order to have validation work
properly. By default,
 * setReuseItems is false, which has the effect that ListView replaces all
child components by new
 * instances. The idea behind this is that you always render the fresh
data, and as people usually
 * use ListViews for displaying read-only lists (at least, that's what we
think), this is good
 * default behavior. <br />
 * However, as the components are replaced before the rendering starts, the
search for specific
 * messages for these components fails as they are replaced with other
instances. Another problem is
 * that 'wrong' user input is kept as (temporary) instance data of the
components. As these
 * components are replaced by new ones, your user will never see the wrong
data when setReuseItems
 * is false.
 * </p>



On Mon, May 6, 2013 at 5:32 AM, Bruno Moura <brunormo...@gmail.com> wrote:

> I have implemented a listView and every time that a new item is added in
> this ListView the values inserted in the textField and selected in a
> DropDownChoice are lost.
>
> The following pictures show what's happen before and after add a new
> ListView item:
>
> [image: Imagem inline 1]
>
> And after Add a new item:
>
> [image: Imagem inline 1]
>
> I'm implemented the code bellow:
>
>
>
>
>       var listData = workSheetDAO.listWorkSheetUser(selectedUser,
> beginDate, endDate)
>
>       var lbPeriodTotal = new Label("periodTotal")
>       lbPeriodTotal.setOutputMarkupId(true)
>       add(lbPeriodTotal)
>
>       add(new ListView[WorkSheet]("listWorkSheet", listData) {
>
>         override protected def onBeforeRender() {
>           super.onBeforeRender()
>         }
>
>         def populateItem(item: ListItem[WorkSheet]) = {
>           var workSheet = item.getModelObject()
>
>           item.add(new LinkDate("initDate", workSheet, 1))
>           item.add(new LinkDate("endDate", workSheet, 1))
>
>           item.add(new TextField("description"))
>
>           val listCustomer: java.util.List[Customer] =
> customerDAO.listCustomers
>
>           item.add(new DropDownChoice("customerSelection", listCustomer,
> new ChoiceRenderer[Customer]("id")))
>
>           if (workSheet.endDate == None) {
>             item.add(new Label("total", ""))
>           } else {
>             var period = new Period(workSheet.initDate,
> workSheet.endDate.get)
>             periodTotal = periodTotal.plus(period)
>             lbPeriodTotal.setDefaultModel(new
> Model(periodTotal.toPeriod().normalizedStandard().toString(getFormatter())))
>             period = period.normalizedStandard()
>             item.add(new Label("total", period.toString(getFormatter())))
>           }
>
>        }
>     }
>
>     private class LinkDate(id: String, workSheet: WorkSheet, type: Int)
> extends Link[String](id) {
>
>       setEnabled(false)
>       add(new Label("label", new Model[String]() {
>         override def getObject(): String = {
>           var result = ""
>           if (type == 1) {
>               result = workSheet.initDate.toString("dd/MM/YYYY HH:mm:ss")
>           } else
>               result = workSheet.endDate.toString("dd/MM/YYYY HH:mm:ss")
>           return result
>         }
>       }))
>
>       def onClick() {}
>     }
>
>
> The only values preserved are the values of the labels.
>
> Please, someone could help me, thanks
>
>
>
> Bera
>



-- 
Regards - Ernesto Reinaldo Barreiro

Reply via email to