Sorry for the delay.  A shadow model basically grabs the actual model's
value in the beginning and caches it. You actually edit the shadowed model.
 Then, when you're done with all of your edits you call "commit" on all of
your shadow models to write back into the originals.  So, I don't think
you'll get a LazyInitializationException.  I guess it depends on what you're
shadowing.  I've got an implementation I call ProxyModelManager in
Wicketopia and I hope to rename it to ShadowModelManager.  I like shadow
much better.

On Mon, Dec 8, 2008 at 8:29 AM, Benjamin Ernst <[EMAIL PROTECTED]>wrote:

> Hi James,
>
> thanks for your help.
>
> I think "shadow" models could work, when I only access non-lazy fields.
> Otherwise I would get a LazyInitializationException.
>
> Or what do you exactly mean by "shadow" models?
>
> - Benjamin
>
> On Mon, Dec 8, 2008 at 1:32 PM, James Carman <[EMAIL PROTECTED]
> >wrote:
>
> > Would "shadow" models help?
> >
> > On Mon, Dec 8, 2008 at 7:06 AM, Benjamin Ernst <[EMAIL PROTECTED]
> > >wrote:
> >
> > > Hi everybody,
> > >
> > > I have a little Problem with LDMs:
> > >
> > > I have a page with a ListView and for each item in the ListView the
> user
> > > can
> > > open a modalWindow to edit the item.
> > >
> > > My Problem is, that I don't want to persist the item to the DB from the
> > > modalWindow. Only after the User confirms the changes in the page with
> > the
> > > ListView, all these changes for all items from the ListView should be
> > > persisted. Or the User presses "abort" and nothing is persisted.
> > >
> > > When I use LDMs changes that are made in the modalWindow are never
> shown
> > in
> > > the ListView, because the models are detached.
> > >
> > > I could use normal Models or the actual Objects for this, but then I
> > might
> > > run into lazy-initialization-problems.
> > >
> > > Has anybody a solution for this problem, or is this simply not possible
> > in
> > > this way?
> > >
> > > Thanks in advance,
> > >
> > > Benjamin
> > >
> > > -------------------------------------------------------------------
> > >
> > > My Code looks like this:
> > >
> > > ListView<Account> accountListView = new
> ListView<Account>("accountList",
> > > accountList)
> > >        {
> > >            @Override
> > >            protected void populateItem(ListItem<Account> item) {
> > >                DetachableEntityModel<Account> account = new
> > > DetachableEntityModel<Account>(item.getModelObject());
> > >
> > >                item.add(new Label("accountName", new
> > > PropertyModel<String>(account, "name")));
> > >                item.add(new Label("accountNumber", new
> > > PropertyModel<String>(account, "number")));
> > >
> > >                item.add(new AjaxLink<Account>("edit", account)
> > >                {
> > >                    @Override
> > >                    public void onClick(AjaxRequestTarget target) {
> > >                        modalWindow.showPage(target, new
> > > AccountEditPage(modalWindow, this.getModel()));
> > >                    }
> > >                });
> > >            }
> > >        };
> > >        cont.add(accountListView);
> > >
> > >        AjaxLink save = new AjaxLink("saveAccounts")
> > >        {
> > >            @Override
> > >            public void onClick(AjaxRequestTarget target) {
> > >                User user = userModel.getObject();
> > >                user.getAccounts().clear();
> > >                user.getAccounts().addAll(accountList);
> > >
> > >
>  ServiceLocator.instance().getUserService().saveUser(user);
> > >            }
> > >        };
> > >
> >
>

Reply via email to