package fr.openwide.core.wicket.more.link.model; import org.apache.wicket.Page; import org.apache.wicket.PageReference; import org.apache.wicket.model.LoadableDetachableModel; public class PageModel<P extends Page> extends LoadableDetachableModel<P> { private static final long serialVersionUID = -8810298985673150374L; private PageReference pageReference; public static <P extends Page> PageModel<P> of(P page) { return new PageModel<P>(page); } public PageModel() { } public PageModel(P page) { super(page); } @SuppressWarnings("unchecked") @Override protected P load() { if (pageReference == null) { return null; } else { return (P) pageReference.getPage(); } } @Override protected void onDetach() { if (isAttached()) { P page = getObject(); pageReference = page == null ? null : page.getPageReference(); super.onDetach(); } } }