我正在寻找的是一个简单的方法来更新浏览器的URL。
我已经为我的primefaces数据表添加了深度链接,这样:
some_url?filter=column:value;column:value
将使用url中的给定值自动过滤我的页面上的dataTable。
<f:viewParam name="filter" value="#{NewsBean.items.settings.deepLink}"/>
<h:form id="NewsForm">
<f:event type="preRenderView" listener="#{NewsBean.items.deepLinkAction}" />
<p:dataTable .... >
"deepLink"保存字符串,"deepLinkAction"解析字符串并过滤数据表。
现在我想更新过滤数据表的URL。当filterEvent被触发时,"deepLink"的字符串被更新为具有给定模式的过滤值。但我怎么能实现,我的深链接的字符串显示在URL。由于双重过滤和双重数据库访问,我不想重新加载页面。
是否有任何客户端解决方案只是为了显示URL。我不想要另一个按钮。
谢谢
您现在可以在大多数现代浏览器中执行此操作。准备好新URL后,可以使用pushState方法,如下所示。
var newURL="/new-url";
window.history.pushState({}, "Page Title", newURL);
了解更多信息,请访问这里。但是,您希望在java代码中完成此工作,因此我建议您在java类中准备url,然后使用AJAX将url传输到客户端,然后使用pushState.