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