我想根据我调用菜单的元素有条件地渲染我的menuitem。 唯一的问题是:menuitem呈现加载xhtml的时刻。因此,我只会为我选择的元素获得“null”。 当然,我可以通过说“如果它为空,只是渲染它”来捕获它,但真正的问题是,一旦渲染,菜单项就会保持渲染。
有没有办法在打开菜单后立即渲染/重新渲染我的菜单项(到那时我会得到所需的信息)?
我已经尝试了几种方法来获取这个:
remoteCommand(我不需要调用任何bean,所以它似乎是错误的工具)
PageReload(显然会关闭我的菜单)
Ajax(可能会工作,但我刚开始学习它 - >在这种情况下它没有做任何事情)
编辑:
Ajax确实有效。我已经更新了代码。现在我一旦选择了一个项目就重新渲染contextMenue,所以孩子们将再次调用他们各自的bean并正确渲染。 唯一的缺陷是:
有什么想法吗?
test.xhtml
<p:contextMenu for="treeId" ajax="false" id="openSP">
<p:menuitem value="Example" ajax="false"
action="#{MyClass.method}"
rendered="#{MyClass2.renderItem}" >
</p:menuitem>
</p:contextMenu>
<p:treeTable id="test"
...
<f:ajax event="select" render="openSP" />
...
</p:treeTable>