在某些事件后重新渲染PrimeFaces元素

时间:2018-02-02 16:07:12

标签: jsf primefaces

我想根据我调用菜单的元素有条件地渲染我的menuitem。 唯一的问题是:menuitem呈现加载xhtml的时刻。因此,我只会为我选择的元素获得“null”。 当然,我可以通过说“如果它为空,只是渲染它”来捕获它,但真正的问题是,一旦渲染,菜单项就会保持渲染。

有没有办法在打开菜单后立即渲染/重新渲染我的菜单项(到那时我会得到所需的信息)?

我已经尝试了几种方法来获取这个:

  • remoteCommand(我不需要调用任何bean,所以它似乎是错误的工具)

  • PageReload(显然会关闭我的菜单)

  • Ajax(可能会工作,但我刚开始学习它 - >在这种情况下它没有做任何事情)

编辑:

Ajax确实有效。我已经更新了代码。现在我一旦选择了一个项目就重新渲染contextMenue,所以孩子们将再次调用他们各自的bean并正确渲染。 唯一的缺陷是:

  • 这需要很长时间(猜测这会导致另一个问题......)
  • 我不想重新渲染菜单,而是孩子们!如果我直接重新渲染孩子,ajax再也找不到它了,所以它会崩溃。

有什么想法吗?

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>

0 个答案:

没有答案