Okay, sorry, it is the model object, not a list. But I still think it
will be the wrong one if something changed between renderings. This
could maybe be solved by keeping a reference to the primary key.

On 6/19/05, Phil Kulak <[EMAIL PROTECTED]> wrote:
> It does, thank you. But in your example, won't the model object be a
> list, not the actual object? And if it is the object, wouldn't it be
> the wrong object if the underlying datastore had changed between
> requests?
> 
> -Phil
> 
> On 6/19/05, Martijn Dashorst <[EMAIL PROTECTED]> wrote:
> > Phil Kulak wrote:
> >
> > >So, as long as I don't make something final, am I alright?
> > >
> > That was not what I meant. When you make things final, you keep
> > references to those objects. You can make things final, but you /really/
> > need to know what will happen then.
> >
> > >For
> > >example, how about not using an inner class:
> > >
> > >final PageableListView list = new PageableListView("rows", data, 10)
> > >{
> > >   public void populateItem(ListItem listItem)
> > >      {
> > >            MyObject value = (MyObject) listItem.getModelObject();
> > >            listItem.add(new Label("name", value.getName()));
> > >      }
> > >};
> > >
> > >It looks to me here like the reference to the "name" String will live
> > >on between requests, but that the object itself and all other
> > >properties should get garbage collected. Is that right?
> > >
> > >
> > True, but that was not your question. You tried to use one instance of
> > an object both at render time and when the request is processed.
> > The problem /may/ arrize when you have different moments of refering to
> > the objects (i.e. storing references to them during render time and
> > using those when the request gets handled) or when you use
> > REDIRECT_TO_RENDER. Using Hibernate you may experience objects that
> > aren't attached to a Hibernate session.
> >
> > If you keep a 'hard' reference to the objects, they won't get attached
> > when handling the request. So you have to use the getModelObject()
> > method to retrieve the object. This will attach the model, and give you
> > the correct object (fresh from the database).
> >
> > I hope I make some sense to you.
> >
> > Martijn
> >
> > >On 6/19/05, Martijn Dashorst <[EMAIL PROTECTED]> wrote:
> > >
> > >
> > >>The problem is that populateItem() is called at render time, and that
> > >>the onClick() is called when you have been to the client and are
> > >>processing the component listener. I have falled into this trap myself,
> > >>and I can only advise you to use the following code, which is a lot more
> > >>safer in any context:
> > >>
> > >>final PageableListView list = new PageableListView("rows", data, 10)
> > >>{
> > >>    public void populateItem(ListItem listItem)
> > >>       {
> > >>          listItem.add(new Link("sjs") {
> > >>             public void onClick() {
> > >>                MyObject value = (MyObject) getParent().getModelObject();
> > >>                System.out.println(value.getName());
> > >>             }
> > >>       }
> > >>};
> > >>
> > >>Note that all final keywords have disappeared and no hidden magic is
> > >>remaining on keeping references to object between render and handling 
> > >>time.
> > >>
> > >>Martijn
> > >>
> > >>
> > >>Phil Kulak wrote:
> > >>
> > >>
> > >>
> > >>>Maybe it's just late, but I can't seem to answer this question myself.
> > >>>Will each model object in my list exist after the request has finished
> > >>>with the following code, assuming that the list is wrapped in a
> > >>>detachable model:
> > >>>
> > >>>final PageableListView list = new PageableListView("rows", data, 10)
> > >>>{
> > >>>       public void populateItem(final ListItem listItem)
> > >>>       {
> > >>>                final MyObject value = (MyObject) 
> > >>> listItem.getModelObject();
> > >>>                listItem.add(new Link("sjs") {
> > >>>                              public void onClick() {
> > >>>                                       
> > >>> System.out.println(value.getName());
> > >>>                              }
> > >>>                });
> > >>>       }
> > >>>};
> > >>>
> > >>>or how about this:
> > >>>
> > >>>final PageableListView list = new PageableListView("rows", data, 10)
> > >>>{
> > >>>       public void populateItem(final ListItem listItem)
> > >>>       {
> > >>>                final MyObject value = (MyObject) 
> > >>> listItem.getModelObject();
> > >>>                final String name = value.getName();
> > >>>
> > >>>                listItem.add(new Link("sjs") {
> > >>>                              public void onClick() {
> > >>>                                       System.out.println(name);
> > >>>                              }
> > >>>                });
> > >>>       }
> > >>>};
> > >>>
> > >>>
> > >>>------------------------------------ -------------------
> > >>>SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
> > >>>
> > >>>
> > >>>from IBM. Find simple to follow Roadmaps, straightforward articles,
> > >>
> > >>
> > >>>informative Webcasts and more! Get everything you need to get up to
> > >>>speed, fast. http://ads.osdn.com/?ad_idt77&alloc_id492&op=click
> > >>>_______________________________________________
> > >>>Wicket-user mailing list
> > >>>[email protected]
> > >>>https://lists.sourceforge.net/lists/listinfo/wicket-user
> > >>>
> > >>>
> > >>>
> > >>>
> > >>>
> > >>
> > >>-------------------------------------------------------
> > >>SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
> > >>from IBM. Find simple to follow Roadmaps, straightforward articles,
> > >>informative Webcasts and more! Get everything you need to get up to
> > >>speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
> > >>_______________________________________________
> > >>Wicket-user mailing list
> > >>[email protected]
> > >>https://lists.sourceforge.net/lists/listinfo/wicket-user
> > >>
> > >>
> > >>
> > >
> > >
> > >-------------------------------------------------------
> > >SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
> > >from IBM. Find simple to follow Roadmaps, straightforward articles,
> > >informative Webcasts and more! Get everything you need to get up to
> > >speed, fast. http://ads.osdn.com/?ad_idt77&alloc_id492&op=click
> > >_______________________________________________
> > >Wicket-user mailing list
> > >[email protected]
> > >https://lists.sourceforge.net/lists/listinfo/wicket-user
> > >
> > >
> >
> >
> >
> > -------------------------------------------------------
> > SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
> > from IBM. Find simple to follow Roadmaps, straightforward articles,
> > informative Webcasts and more! Get everything you need to get up to
> > speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
> > _______________________________________________
> > Wicket-user mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/wicket-user
> >
>


-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_idt77&alloc_id492&op=click
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to