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 回答