Hi guys,

since wicket 1.5 we can use "recreate page if page has expired" option in
the page settings in order to avoid page expirations. I tried that, but it
doesn't restore PageParameters, so it is useless for us...

So I wrote my own PageInstanceMapper with overrided mapRequest method:

public IRequestHandler mapRequest(Request request) {
 Url url = request.getUrl();
        IRequestHandler resultRequestHandler = null;
        if (matches(url))
        {
            PageComponentInfo info = getPageComponentInfo(url);
            if (info != null && info.getPageInfo().getPageId() != null)
            {
                Integer renderCount = info.getComponentInfo() != null ?
info.getComponentInfo()
                        .getRenderCount() : null;

                if (info.getComponentInfo() == null)
                {
                    PageProvider provider = new
PageProvider(info.getPageInfo().getPageId(),
                            renderCount);
                    provider.setPageSource(getContext());
                    // render page
                    resultRequestHandler = new
RenderPageRequestHandler(provider);
                }
                else
                {
                    ComponentInfo componentInfo = info.getComponentInfo();

                    PageAndComponentProvider provider = new
PageAndComponentProvider(
                            info.getPageInfo().getPageId(), renderCount,
                            componentInfo.getComponentPath());

                    // my method to test whether page is in the storage....
                    if (!isPageResolvable(info.getPageInfo().getPageId(),
provider)) {
                        provider = new PageAndComponentProvider(<pageClass
to restore>,
                                <page params to restore>,
componentInfo.getComponentPath());
                    }

                    provider.setPageSource(getContext());

                    // listener interface
                    RequestListenerInterface listenerInterface =
requestListenerInterfaceFromString(componentInfo.getListenerInterface());

                    resultRequestHandler = new
ListenerInterfaceRequestHandler(provider, listenerInterface,
                            componentInfo.getBehaviorId());
                }
            }
        }
        return resultRequestHandler;
}


In this way PageProvider knows exactly howto recreate the page properly,
it's working great.....But if the recreated page contains forms, all entered
data are lost...:-(((

Is there any way of reconstructing the page without loosing the entered form
input?

thanks a lot in advance

T.



--
View this message in context: 
http://apache-wicket.1842946.n4.nabble.com/Page-recreation-if-page-has-expired-problem-tp4662339.html
Sent from the Forum for Wicket Core developers mailing list archive at 
Nabble.com.

Reply via email to