summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorLeif Åstrand <leif@vaadin.com>2013-08-02 10:20:40 +0300
committerLeif Åstrand <leif@vaadin.com>2013-08-02 10:20:46 +0300
commitd97cfbc9a1409582bbe4456f08f648921b7e3300 (patch)
tree35f60cb64968d342f28540db4e37a8205b82cd8f /server
parentf5872981ddf8ff274a12ee59d7a0116e61bde602 (diff)
downloadvaadin-framework-d97cfbc9a1409582bbe4456f08f648921b7e3300.tar.gz
vaadin-framework-d97cfbc9a1409582bbe4456f08f648921b7e3300.zip
Refine handling of null and empty URI fragments (#12207)
Change-Id: Ie133694b010a586c6336e9b04be7bcd94d2525e9
Diffstat (limited to 'server')
-rw-r--r--server/src/com/vaadin/server/Page.java14
1 files changed, 10 insertions, 4 deletions
diff --git a/server/src/com/vaadin/server/Page.java b/server/src/com/vaadin/server/Page.java
index 3656309be5..037d8e8352 100644
--- a/server/src/com/vaadin/server/Page.java
+++ b/server/src/com/vaadin/server/Page.java
@@ -552,10 +552,11 @@ public class Page implements Serializable {
* The fragment is the optional last component of a URI, prefixed with a
* hash sign ("#").
* <p>
- * Passing <code>null</code> as <code>newFragment</code> clears the fragment
- * (no "#" in the URI); passing an empty string sets an empty fragment (a
- * trailing "#" in the URI.) This is consistent with the semantics of
- * {@link java.net.URI}.
+ * Passing an empty string as <code>newFragment</code> sets an empty
+ * fragment (a trailing "#" in the URI.) Passing <code>null</code> if there
+ * is already a non-null fragment will leave a trailing # in the URI since
+ * removing it would cause the browser to reload the page. This is not fully
+ * consistent with the semantics of {@link java.net.URI}.
*
* @param newUriFragment
* The new fragment.
@@ -570,6 +571,11 @@ public class Page implements Serializable {
*/
public void setUriFragment(String newUriFragment, boolean fireEvents) {
String oldUriFragment = location.getFragment();
+ if (newUriFragment == null && getUriFragment() != null) {
+ // Can't completely remove the fragment once it has been set, will
+ // instead set it to the empty string
+ newUriFragment = "";
+ }
if (newUriFragment == oldUriFragment
|| (newUriFragment != null && newUriFragment
.equals(oldUriFragment))) {