rich:contextmenu在reRender oncontextmenu之后显示

时间:2012-11-07 09:22:27

标签: richfaces seam2

我正在使用Richfaces 3.3.3

以某种方式可以reRender一个上下文菜单,并在它被重新呈现后显示它吗?

目前我使用a4j:支持事件onmouseover根据附加到指向组件的一些值来reRender contextmenu。

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

我想做这样的事情。

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

1 个答案:

答案 0 :(得分:2)

这是一个可以用来做到这一点的技巧。但是,对整个rich:contextMenu组件进行重新编译将不会非常有用,因为当您执行reRendering时,它会消失。但是,您可以在菜单中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" {
{1}}
      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>标记并放入此JS。

  

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