Hi James,
How does this work with a Hibernate-managed object? Did you test it
with Hibernate?
Op 8 dec 2008, om 19:45 heeft James Carman het volgende geschreven:
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);
}
};
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]