0

Richfaces 3.3.3 を使用しています

コンテキストメニューを再レンダリングし、再レンダリングした後に表示することは何とか可能ですか?

現在、a4j:support をイベント onmouseover で使用して、指定されたコンポーネントにアタッチされた値に従ってコンテキストメニューを再レンダリングします。

ユーザーがマウスの右ボタンをクリックすると、rich:componentControl を使用してコンテキスト メニューが表示されます。

私はこのようなことをしたいと思います。

<a4j:support event="oncontextmenu" reRender="contextMenu" oncomplete="#{rich:component('contextmenu')}.show()">
    <a4j:actionparam ...../>
</a4j:support>
4

1 に答える 1

2

これは、それを行うために使用できるトリックです。ただし、コンポーネント全体を再レンダリングすると、rich:contextMenuコンポーネントが消えてしまうため、あまり役に立ちません。ただし、メニューのreRender項目は可能です。contextMenuは非表示になりません。これがあなたがそれをする方法です。IDが「 my_div
」のdivは、右クリックする必要があるコンポーネントであることに注意してください。

<h:form id="frm" style="border:solid red; height:500px;width:500px;">
    <s:div id="my_div" style="border:solid; height:200px;width:200px;">
        Right click inside of me.
    </s:div>

    <rich:contextMenu target="my_div" submitMode="client" showEvent="click"
                  id="contextMenu" >
        <rich:menuItem value="Item 1" id="it1"/>
        <rich:menuItem value="Item 2" id="it2"/>
    </rich:contextMenu>

    <a4j:jsFunction ajaxSingle="true" name="showContextMenu" id="jsFunc"
            reRender="it1,it2" />
</h:form>

<script>タグ内にタグを追加し、<head>このJSを配置します。

<script>
    function validateComponent() {
        showContextMenu();
    }
    window.onload = function() {
        #{rich:element('my_div')}.oncontextmenu = validateComponent;
    }
</script>

于 2012-11-07T16:08:39.250 に答える