Thanks Ernesto for your help

Bruno Moura


2013/5/5 Ernesto Reinaldo Barreiro <[email protected]>

> 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 <[email protected]> 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