【问题标题】:rich:contextmenu display after reRender oncontextmenurich:contextmenu 重新渲染后显示 oncontextmenu
【发布时间】:2012-11-07 09:22:27
【问题描述】:

我正在使用 Richfaces 3.3.3

是否有可能重新渲染上下文菜单并在重新渲染后显示它?

目前我使用 a4j:support 和事件 onmouseover 来根据附加到指向组件的一些值重新渲染上下文菜单。

当用户使用鼠标右键单击时,我使用rich:componentControl 显示上下文菜单。

我想做这样的事情。

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

【问题讨论】:

    标签: richfaces seam2


    【解决方案1】:

    这是一个你可以用来做到这一点的技巧。但是重新渲染整个rich:contextMenu 组件不会很有用,因为当您重新渲染时,它会消失。但是,您可以reRender 菜单中的每个item。它不会隐藏 contextMenu。这就是你可以做到的。
    请注意,id 为“my_div”的 div 是您应该在其中右键单击的组件。

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

    &lt;rich:contextMenu target="my_div" submitMode="client" showEvent="click"
                     id="contextMenu" &gt;
    &lt;rich:menuItem value="Item 1" id="it1"/&gt;
    &lt;rich:menuItem value="Item 2" id="it2"/&gt;
    &lt;/rich:contextMenu&gt;

        &lt;a4j:jsFunction ajaxSingle="true" name="showContextMenu" id="jsFunc"
                reRender="it1,it2" /&gt;
    &lt;/h:form&gt;

    在&lt;head&gt;标签内添加&lt;script&gt;标签并放入这个JS。

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

    【讨论】:

    • 您好,感谢您的回答!看起来很有希望。但是我不能完全使用它,因为我的情况有点不同。我有多个可以单击的 div,它们的 id 是唯一的,但可以动态调用。我将尝试应用您的示例。我的第一次尝试失败了,上下文菜单确实显示了,但内容没有重新渲染,我现在使用菜单项 ID 重新渲染。
    • 不管你有没有额外的DIV。您可以相应地更改代码。但是,如果您仍然没有任何成功,请发布您的简化代码,以便我可以找到是否可以帮助您。
    猜你喜欢
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    相关资源
    最近更新 更多