Repository: wicket
Updated Branches:
  refs/heads/wicket-6.x ae7a0f8b9 -> 0519f72b4


WICKET-6295 fallback to home page
a previous request might have consumed the original destination - this could 
happen if the meta refresh fires but the user is still able to link on the link


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/0519f72b
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/0519f72b
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/0519f72b

Branch: refs/heads/wicket-6.x
Commit: 0519f72b4d57e6443b8a8d5805955fd0a516135c
Parents: ae7a0f8
Author: Sven Meier <svenme...@apache.org>
Authored: Mon Dec 12 22:31:11 2016 +0100
Committer: Sven Meier <svenme...@apache.org>
Committed: Mon Dec 12 22:31:11 2016 +0100

----------------------------------------------------------------------
 .../markup/html/pages/BrowserInfoPage.java      | 72 ++++++++++----------
 1 file changed, 37 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/0519f72b/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoPage.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoPage.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoPage.java
index 373cbb5..3f82bf0 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoPage.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoPage.java
@@ -20,15 +20,13 @@ import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.OnLoadHeaderItem;
 import org.apache.wicket.markup.html.WebComponent;
-import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.link.Link;
 import org.apache.wicket.model.AbstractReadOnlyModel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.LoadableDetachableModel;
-import org.apache.wicket.protocol.http.ClientProperties;
 import org.apache.wicket.protocol.http.WebSession;
 import org.apache.wicket.protocol.http.request.WebClientInfo;
-import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.settings.IRequestCycleSettings;
 
 /**
@@ -53,28 +51,11 @@ public class BrowserInfoPage extends WebPage
        private BrowserInfoForm browserInfoForm;
 
        /**
-        * Bookmarkable constructor. This is not for normal framework client 
use. It will be called
-        * whenever JavaScript is not supported, and the browser info page's 
meta refresh fires to this
-        * page. Prior to this, the other constructor should already have been 
called.
+        * Bookmarkable constructor.
         */
        public BrowserInfoPage()
        {
                initComps();
-               RequestCycle requestCycle = getRequestCycle();
-               WebSession session = (WebSession)getSession();
-               WebClientInfo clientInfo = session.getClientInfo();
-               if (clientInfo == null)
-               {
-                       clientInfo = new WebClientInfo(requestCycle);
-                       getSession().setClientInfo(clientInfo);
-               }
-               else
-               {
-                       ClientProperties properties = 
clientInfo.getProperties();
-                       properties.setJavaEnabled(false);
-               }
-
-               continueToOriginalDestination();
        }
 
        @Override
@@ -97,20 +78,18 @@ public class BrowserInfoPage extends WebPage
         */
        private void initComps()
        {
-               WebComponent meta = new WebComponent("meta");
-
-               final IModel<String> urlModel = new 
LoadableDetachableModel<String>()
-               {
-                       private static final long serialVersionUID = 1L;
-
+               final IModel<WebClientInfo> info = new 
LoadableDetachableModel<WebClientInfo>() {
                        @Override
-                       protected String load()
+                       protected WebClientInfo load()
                        {
-                               CharSequence url = 
urlFor(BrowserInfoPage.class, null);
-                               return url.toString();
+                               return new WebClientInfo(getRequestCycle());
                        }
                };
 
+               final ContinueLink link = new ContinueLink("link", info);
+               add(link);
+
+               WebComponent meta = new WebComponent("meta");
                meta.add(AttributeModifier.replace("content", new 
AbstractReadOnlyModel<String>()
                {
                        private static final long serialVersionUID = 1L;
@@ -118,14 +97,11 @@ public class BrowserInfoPage extends WebPage
                        @Override
                        public String getObject()
                        {
-                               return "0; url=" + urlModel.getObject();
+                               return "0; url=" + link.getURL();
                        }
 
                }));
                add(meta);
-               WebMarkupContainer link = new WebMarkupContainer("link");
-               link.add(AttributeModifier.replace("href", urlModel));
-               add(link);
 
                browserInfoForm = new BrowserInfoForm("postback")
                {
@@ -139,4 +115,30 @@ public class BrowserInfoPage extends WebPage
                };
                add(browserInfoForm);
        }
-}
+
+       private static class ContinueLink extends Link<WebClientInfo> {
+
+               public ContinueLink(String id, IModel<WebClientInfo> info)
+               {
+                       super(id, info);
+               }
+
+               @Override
+               public CharSequence getURL() {
+                       return super.getURL();
+               }
+
+               @Override
+               public void onClick()
+               {
+                       getModelObject().getProperties().setJavaEnabled(false);
+
+                       WebSession.get().setClientInfo(getModelObject());
+
+                       continueToOriginalDestination();
+
+                       // switch to home page if no original destination was 
intercepted
+                       setResponsePage(getApplication().getHomePage());
+               }
+       }
+}
\ No newline at end of file

Reply via email to