我有一个primefaces菜单,其中的项目在支持bean的条件下被禁用。问题是,条件是在更新之后处理的。
如果选择启用每个项的节点,然后切换到禁用所有项的节点,则会重新加载菜单,但在禁用项目之前,会显示启用的所有内容。
在菜单显示之前,是否有一种处理禁用条件的方法?
<h:form id="form">
<p:tree id="tree" ...>
<p:ajax event="select" update=":form:tree:menu" listener...>
<p:treeNode id="treenode">
<p:commandButton id="btn" type="button" />
<p:overlayPanel for="btn">
<p:menu id=menu">
<p:menuitem .... disabled="#{bean.condition1}" />
<p:menuitem .... disabled="#{bean.condition2}" />
...
</p:menu>
</p:overlayPanel>
</p:treenode>
</p:tree>
发布于 2015-10-15 16:39:56
编辑的
在ajax调用请求时隐藏菜单项,并在完成时显示它们。页面中的源代码是:
<p:tree id="tree" value="#{bean.root}" var="node" selectionMode="checkbox">
<p:treeNode id="treenode">
<p:commandButton id="btn" value="#{node}"
onstart="$('.ui-overlaypanel-content').css('display','none');"
oncomplete="$('.ui-overlaypanel-content').css('display','block');"
actionListener="#{bean.processAndUpdateConditions}" update="mymenu"/>
<p:overlayPanel for="btn">
<p:menu id="mymenu" >
<p:menuitem value="Condition 1" disabled="#{bean.condition1}" />
<p:menuitem value="Condition 2" disabled="#{bean.condition2}" />
</p:menu>
</p:overlayPanel>
</p:treeNode>
</p:tree>https://stackoverflow.com/questions/33145552
复制相似问题