I think there is another solution more simple and handle by Tapestry. I think you can declare a page "version" as accessible directly from outside using a static URL and Tapestry serialize the page as a static page.
Check this page : http://tapestry.apache.org/tapestry4/tapestry/ComponentReference/ExternalLink.html 2006/7/17, Firas A. <[EMAIL PROTECTED]>:
I got it! But the solution is rather low-level. First, I had to modify my form listener to return an ILink: public ILink onSubmit() Then, I had to create the ILink using LinkFactoryImpl: @InjectObject("service:tapestry.globals.WebRequest") public abstract WebRequest getWebRequest(); @InjectObject("engine-service:direct") public abstract IEngineService getService(); // Somewhere in the page class: Map<String, Object> params = new HashMap<String, Object>(1); params.put(ServiceConstants.PARAMETER, getRequestCycle().getListenerParameters()); LinkFactoryImpl linkFactory = new LinkFactoryImpl(); DataSqueezerImpl dataSqueezer = new DataSqueezerImpl(); dataSqueezer.register(new StringAdaptor()); linkFactory.setDataSqueezer(dataSqueezer); linkFactory.setContributions(Collections.EMPTY_LIST); linkFactory.setContextPath(getWebRequest().getContextPath()); ErrorLog errorLog = new ErrorLogImpl(new DefaultErrorHandler(), LogFactory .getLog(MyPageClass.class)); linkFactory.setErrorLog(errorLog); linkFactory.setRequest(getWebRequest()); linkFactory.setRequestCycle(getRequestCycle()); linkFactory.setServletPath(getWebRequest().getActivationPath()); linkFactory.initializeService(); ILink iLink = linkFactory.constructLink(getService(), false, params, false); That was a lot of code don't you think? But here's a question: how do you make sure this 'original' ILink is not lost/overridden betwing requests, especially if your page uses validators? I found a solution for that too. If you need help with this, drop me a line and I'll gladly help. Regards!