2012-11-07 66 views
0

後我使用RichFaces的3.3.3豐富:文本菜單顯示重新呈現oncontextmenu

是它在某種程度上可能重新解析文本菜單,它是重新描繪後,顯示呢?

目前我使用a4j:支持事件onmouseover根據附加到指向組件的一些值來重新激活contextmenu。

當用戶點擊鼠標右鍵時,我使用rich:componentControl顯示上下文菜單。

我想要這樣做。

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

回答

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>

+0

您好,感謝您的回答!看起來很有希望。但是我不能完全使用它,因爲我的情況有點不同。我有多個div比可以點擊和他們的ID是獨特的,但動態稱爲。我會嘗試應用你的例子。我的第一次嘗試失敗,contextmenu確實顯示,但內容不reRendered,我現在使用菜單項ID爲reRender。 – gadeynebram

+0

無論你是否有額外的DIV。您可以相應地更改代碼。但是,如果您仍然沒有任何成功,請發佈您的簡化代碼,以便我可以找到我是否可以幫助您。 – prageeth