我正在将JSF 2与PrettyFaces以及<h:link>
和<f:param>
标记结合使用,以获得可书签页面(在JSF应用程序中最终忘记所有这些POST请求是很棒的)。
但是,其中一些链接只更改页面的一小部分(主要是当用户停留在相同的视图中时),所以最好还是发送ajax请求。但是,<f:ajax>
不能与<h:link>
一起使用,只能与<h:commandlink>
一起使用。我也可以通过命令链接发送参数,但是在这种情况下,URL在请求后保持不变。因此,它与页面内容不同步,并且不可刷新。
我见过一些站点使用一些链接来发送GET和ajax请求(在用ajax修改页面时指向一个新的url ),但到目前为止我还没有找到任何解决方案。
在ajax请求完成后(或者当用户单击时),我可以用jsf刷新url吗?还是必须使用外部JS库?
编辑:这里需要的JS库是新的JavaScript历史API。更多信息。我猜JSF目前不使用这个API。但从JSF开发人员的角度来看,我仍然对这个问题感兴趣。
另外,它是否计划在未来发布JSF?将<f:ajax>
与<h:link>
相结合将是一个完美的解决方案。
发布于 2014-10-06 16:18:17
<f:ajax>
具有属性onevent。它采用javascript
函数的名称,该函数将在ajax request
成功完成后调用。因此,可以添加js函数,在ajax调用完成后导航到所需的url。类似于:
<h:commandLink id="testButton"
value="Test">
<f:ajax event="action"
execute="@form"
render="@none"
listener="#{myBean.testButtonClickedHandler}"
onevent="navigate"/>
</h:commandLink>
<script type="text/javascript">
function navigate() {
window.location.href = "required url";
}
</script>
https://stackoverflow.com/questions/12546438
复制相似问题