我正在使用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>
答案 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;
}