You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Hendy Irawan <he...@soluvas.com> on 2014/12/29 14:22:07 UTC

History API support for navigable AJAX pages/components?

Hi friends,

Continuing the discussion on
https://issues.apache.org/jira/browse/WICKET-5290 /
http://apache-wicket.1842946.n4.nabble.com/Wicket7-History-API-support-for-navigable-AJAX-pages-components-td4660502.html,
I made a simple working experiment:

final DropdownSizePanel dropdownSizePanel = new
DropdownSizePanel("dropdownSize", selectedSizeModel) {
	@Override
	protected void onSizeChanged(AjaxRequestTarget target) {
		target.add(productGrid);
		final PageParameters newParams = new
PageParameters(getPage().getPageParameters());
		newParams.set("selectedSize",
Optional.ofNullable(selectedSizeModel.getObject()).map(Term::getQName).orElse(null));
		final String newUri = urlFor(getPage().getPageClass(),
newParams).toString();
		target.appendJavaScript("window.history.pushState(null, null, " +
JSONObject.quote(newUri) + ");");
	}
};
add(dropdownSizePanel);

This works brilliantly with a caveat: Even after the browser URI is updated,
next AJAX calls still use the "old" URI.

So this is a missing piece, how do I change Wicket's client-side "URI"
variable? So next AJAX calls will use the "new" URI.

Thank you.

Hendy

--
View this message in context: http://apache-wicket.1842946.n4.nabble.com/History-API-support-for-navigable-AJAX-pages-components-tp4668897.html
Sent from the Users forum mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: History API support for navigable AJAX pages/components?

Posted by Hendy Irawan <he...@soluvas.com>.
I tried to do this:

protected void onSizeChanged(AjaxRequestTarget target) {
	target.add(productGrid);
	final PageParameters newParams = new
PageParameters(getPage().getPageParameters());
	newParams.set("selectedSize",
Optional.ofNullable(selectedSizeModel.getObject()).map(Term::getQName).orElse(null));
	final String newUri = urlFor(getPage().getPageClass(),
newParams).toString();
	final String absoluteNewUri =
RequestUtils.toAbsolutePath(getRequest().getUrl().toString(), newUri);
	target.appendJavaScript("window.history.pushState(null, null, " +
JSONObject.quote(newUri) + ");");
	target.appendJavaScript("Wicket.Ajax.baseUrl = " +
JSONObject.quote(StringUtils.removeStart(absoluteNewUri, "/")) + ";");
}

but although Wicket.Ajax.baseUrl does change in the client, but seems to
have no effect.

--
View this message in context: http://apache-wicket.1842946.n4.nabble.com/History-API-support-for-navigable-AJAX-pages-components-tp4668897p4668898.html
Sent from the Users forum mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org