7

私は JSF 2 を PrettyFaces と一緒に使用し、ブックマーク可能なページを取得するためにタグ<h:link><f:param>タグを広範囲に使用しています (JSF アプリケーションでの POST 要求をすべて忘れることができて本当に良かったです)。

ただし、これらのリンクの一部はページのごく一部を変更するだけなので (主にユーザーが同じビューにとどまっている場合)、代わりに ajax リクエストを送信する方が適切です。ただし、だけ<f:ajax>では使用できません。コマンドリンクを使用してさまざまな方法でパラメーターを送信することもできますが、この場合、URL は要求後も同じままです。そのため、ページのコンテンツと同期しなくなり、更新できなくなります。<h:link><h:commandlink>

GET と ajax リクエスト (ajax でページを変更している間に新しい URL を指す) のようなものを送信するリンクを使用するサイトを見てきましたが、これまでのところ解決策は見つかりませんでした。

ajax リクエストが終了した後 (またはユーザーがクリックしたとき)、どうにかして jsf で URL を更新できますか? または、外部の JS ライブラリを使用する必要がありますか?

EDIT : ここで必要な JS ライブラリは、新しい JavaScript History API です。より詳しい情報。 JSF は現在この API を使用していないと思います。しかし、JSF 開発者の観点からは、この問題にまだ関心があります。

また、JSF の将来のリリースで計画されていますか? と組み合わせる<f:ajax><h:link>完璧なソリューションになります。

4

1 に答える 1

-1

<f:ajax>属性oneventがあります。正常に終了したjavascript後に呼び出される関数の名前を取ります。ajax requestそのため、ajax 呼び出しが終了した後に必要な URL に移動する js 関数を追加することができます。何かのようなもの:

        <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 に答える