今天在完成一個功能時,遇到了一點問題:
使用rich:dataTable顯示了一個列表,需要實現的功能是:右鍵點擊row的時候需要彈出contextMenu并且讓此行記錄被高亮顯示。
<rich:contextMenu attached="false" id="fulfillmentItemContextMenu" submitMode="ajax">
xxxxxxxx
</rich:contextMenu>
<rich:dataTable xxxxxxx>
<rich:column xxxxxx>
<rich:column xxxxxx>
<rich:column xxxxxx>
<rich:componentControl event="onRowContextMenu" for="statusContextMenu" operation="show">
</rich:dataTable>
但是要使此記錄被顯示的功能是實現在后臺bean里面,所以要先執行這個函數之后再彈出對應的菜單。這樣就不能使用componentControl來控制了,只能使用a4j:support了。
將對應的componentControl代碼改為:
<a4j:support action="#{backBean.selectItem(id)}" event="onRowContextMenu"
reRender="xxPanel" oncomplete="
#{rich:component('xxxxContextMenu')}.doShow(event, {})"/>
注意:richContextMenu的官方文檔對這個tag的js函數解釋的不是很清楚,也沒有對應的例子,這是我在google了好久之后才發現的一個小例子。請注意加粗部分代碼的使用。
另附官方對richContextMenu的js函數的說明:
Table 6.113. JavaScript API
Function | Description | Apply to |
hide() |
Hides component or group |
Component, group |
show(event, context) |
Shows component or group |
Component, group |