OK, I've tried to create an unversioned page to keep the URL stable using 
following page code:

> public class DownloadFile extends TemplatePage {
> 
>       // Constants 
> ==============================================================
> 
>       private static final String FILE_PARAMETER = "file";
> 
>       // Static 
> =================================================================
> 
>       public static BookmarkablePageLink createLinkToPage(String id, String 
> file) {
>               final BookmarkablePageLink pageLink = new 
> BookmarkablePageLink(id, DownloadFile.class);
>               pageLink.setParameter(FILE_PARAMETER, file);
>               return pageLink;
>       }
> 
>       // Setup 
> ==================================================================
> 
>       public DownloadFile(PageParameters parameters) {
>               final String file = parameters.getString(FILE_PARAMETER);
>               if (file == null) {
>                       throw new 
> RestartResponseAtInterceptPageException(Download.class);
>               }
> 
>               if (!getOurSession().isLicenseAgreed()) {
>                       addContent(createLicenseFragment("contentPanel", 
> parameters));
>                       throw new RestartResponseAtInterceptPageException(this);
>               }
> 
>               addContent(createDownloadFragment("contentPanel", file));
>       }
> 
>       // Utils 
> ==================================================================
> 
>       private Fragment createDownloadFragment(String id, String file) {
>               final Fragment fragment = new Fragment(id, "downloadFragment");
>               fragment.add(new Label("file", file));
>               return fragment;
>       }
> 
>       private Fragment createLicenseFragment(String id, final PageParameters 
> parameters) {
>               final Fragment fragment = new Fragment(id, "licenseFragment");
>               fragment.add(new PageLink("accept", new IPageLink() {
>                       public Page getPage() {
>                               getOurSession().setLicenseAgreed(true);
>                               return new DownloadFile(parameters);
>                       }
> 
>                       public Class getPageIdentity() {
>                               return DownloadFile.class;
>                       }
>               }));
>               return fragment;
>       }
> 
>       public boolean isVersioned() {
>               return false;
>       }
> }

Every page is mounted with QueryStringUrlCodingStrategy. On the Download 
page a link to this DownloadFile page is created using the above 
createLinkToPage() static method call which creates a link to 
"http://localhost:8080/smartcvs/download-file.html?file=win32jre";
Curiously, when I click on it, the browser displays 
"http://localhost:8080/?wicket:interface=:2::"; as URL. The "accept"-link 
occurs pointing to 
"http://localhost:8080/?wicket:interface=:2:border:contentPanel:accept::ILinkListener";.
 
When I click it, the browser displays 
"http://localhost:8080/?wicket:interface=:3::"; as URL. Clicking the 
back-button shows the "http://localhost:8080/?wicket:interface=:2::"; page 
with the "accept"-link, no matter whether I try it with Opera or FireFox.

Tom


Eelco Hillenius wrote:
>> Regarding the back-button: it would be the best if the intermediate license
>> agreement page would not occur when pressing the back-button, but instead
>> the previous page (if any). Is something like that possible?
> 
> What you need to achieve is that the URL stays stable. One way to
> achieve this is to use panel replacement. E.g. when you click the
> download page, you replace the main panel on your page with a panel
> that displays the license agreement. If you turn off versioning for
> that page, the URL will stay stable and thus if you push the back
> button later, your browser will return to the first version of the
> page. I think this should work for most browsers (maybe only not with
> Opera). There are alternative ways to do this, including throwing
> RestartResponseExceptions, using custom page factories and custom url
> coding strategies. Or you can trick the browser using JavaScript, of
> which I don't know too many details.
> 
> Eelco


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to