我正在使用JSF 2和PrettyFaces以及<h:link>
和<f:param>
标签来获取可收藏的页面(最终忘记JSF应用程序中的所有POST请求真的很棒。)
但是,其中一些链接只会改变页面的一小部分(主要是当用户停留在同一视图中时),因此发送ajax请求会更好。但是,<f:ajax>
不能与<h:link>
一起使用,只能<h:commandlink>
。我也可以使用commandlink以多种方式发送参数,但在这种情况下,URL在请求后保持不变。因此它与页面内容不同步,并且不可刷新。
我见过使用链接的网站发送GET和ajax请求的混合物(在用ajax修改页面时指向一个新的URL),但到目前为止我还没有找到任何解决方案。
在ajax请求完成后(或用户点击时),我可以用jsf以某种方式刷新url吗?或者我是否必须使用一些外部JS库?
编辑:这里需要的JS库是新的JavaScript History API。 More info. 我猜JSF目前不使用这个API。但是从JSF开发人员的角度来看,我仍然对这个问题很感兴趣。
此外,它是否计划在未来发布JSF?将<f:ajax>
与<h:link>
结合起来将是一个完美的解决方案。
答案 0 :(得分:-1)
<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>