7

我正在使用 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 History API。更多信息。 我猜 JSF 目前不使用这个 API。但从 JSF 开发人员的角度来看,我仍然对这个问题感兴趣。

另外,是否计划在 JSF 的未来版本中发布?结合<f:ajax><h:link>是一个完美的解决方案。

4

1 回答 1

-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>
于 2014-10-06T16:18:17.820 回答