今天在完成一个功能时,遇到了一点问题:
使用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 |