We know the standard example and it works as advertised:
<rich:contextMenu id="devicemenu">
<rich:menuItem value={devid} />
</rich:contextMenu>
<rich:dataTable value="#{bean.resultList}" var="_var">
<rich:column>
<h:outputText value="#{_var.devId}" />
</rich:column
<rich:componentControl event="onRowContextMenu" for="devicemenu"
operation="show">
<f:param name="devid" value="#{_var.devId}" />
</rich:componentControl>
</richdataTable>
In other words, the value of #{_var.name} from the table gets passed as a parameter to the context menu and gets displayed in the menu item, represented by {name}.
The problem I am having is how to using this value for anything other than simply displaying it. I cannot figure out how to put it in an EL expression. I cannot use it in any children of rich:menuItem. So for anything other than simply displaying it, this is useless.
I'm trying to use this menu item to navigate to another page. I've tried this
<rich:menuItem action="device_detail" value="View details {devid}">
<f:setPropertyActionListener value="{devid}"
target="#{devicesHome.devId}" />
</rich:menuItem>
The navigation occurs on the .page.xml file. In this case, {devid} turns up as null when I try and assign it to devicesHome.devId.
I've tried this:
<rich:menuItem value="View details X{devid}X" action="#{devicesHome.doSomething(devid)}"
rendered="#{not facesContext.externalContext.requestServletPath.contains('Device.seam')}">
The menu is rendered with text like this: "View details X43251X"
But devicesHome.doSomething(devid) prints this: "PRINT THIS 0"
How can I use the value that is passed via devid other than to simply display it?
TDR