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);
> > }
> > };
> >
>