0

画像を右クリックして、JSF2/Primefaces 5.x でバッキング Bean ajax メソッドを呼び出す方法はありますか? Primefaces には contextMenu コンポーネントがありますが、メニューが表示されますが、これは望ましくありません。

4

2 に答える 2

4

このjQuery コードと PrimeFacesを使用すると<p:remoteCommand>、これを実現できます。簡単なコード を次に示します。

<h:form>
        <p:graphicImage id="myImage" onmousedown="rmc(event)" library="img" name="myImage.png" class="RMC"/>
        <p:remoteCommand name="rightMouseClick" action="#{backingBean.method}" update="myImage"/>
</h:form>
    <script>
        $(document).on("mousedown", ".RMC", function () {
            $(".RMC").each(function () {
                this.oncontextmenu = function () {
                    return false;
                };
            })

            $(".RMC").mousedown(function (e) {
                if (e.button == 2) {
                    rightMouseClick();
                    return false;
                }
                return true;
            });
        });

        function rmc(e) {
            this.oncontextmenu = function () {
                return false;
            };

            if (e.button == 2) {
                rightMouseClick();
                return false;
            }
            return true;
        }
    </script>

クラスを持つ画像の右マウス メニューを無効にしRMC、バッキング Bean からメソッドを呼び出します。メニューを無効にしたくない場合は、.each()一部を削除してください。

編集: DOM 要素を更新した後、指定されたイベントが失われるため、コンポーネントにイベントを直接$(document).ready()追加する必要があります。onmousedown

EDIT2: 変更$(document).ready()され、更新後も RMC クラスの要素で機能するようになりました。

于 2015-09-14T20:03:37.733 に答える
0

非常に簡単です…あなたの問題を分解してください。最初にhtmlを考えてください。jquery を介して右クリックを追加し、 a を使用しp:remoteCommandて backingbean を呼び出すだけです。

于 2015-09-14T20:12:17.000 に答える