考慮以下代碼,它會顯示一個包含一列和一個過濾器的表以顯示活動/非活動記錄。 如何根據過濾器中選定的值禁用菜單項「無效」?換句話說,如果過濾器值是「無效」,則應禁用「禁用」菜單。PrimeFaces - 動態菜單項
<p:contextMenu for="ratingScaleTable" id="RsContextMenuId">
<p:menuitem value="Edit" update=":templateForm:tabView, :templateForm:dirtyFlag" icon="ui-icon-search" action="#{ratingScaleBK.edit}" />
<p:menuitem id="inactivate" value="Inactivate" icon="ui-icon-close" action="#{ratingScaleBK.inactivate}" disabled="#{ratingScaleBK.selectedRatingScale.active==0}" />
<p:menuitem value="Activate" update=":templateForm:tabView" icon="ui-icon-close" action="#{ratingScaleBK.activate}"/>
<p:menuitem value="View Archive" update=":templateForm:tabView" icon="ui-icon-close"/>
</p:contextMenu>
<p:dataTable id="ratingScaleTable" widgetVar="tableWidget"
value="#{ratingScaleBK.ratingScaleList}" var="item1"
selectionMode="single"
selection="#{ratingScaleBK.selectedRatingScale}"
rowKey="#{item1.name}"
rendered="#{not empty ratingScaleBK.ratingScaleList}"
filteredValue="#{ratingScaleBK.filteredRatingscale}">
<p:ajax event="rowSelect" process="ratingScaleTable" listener="#{ratingScaleBK.edit}" update=":templateForm:tabView, :templateForm:dirtyFlag, :templateForm:tabView:RsContextMenuId " />
<p:column id="activeCol" filterBy="#{item1.active}"
filterOptions="#{ratingScaleBK.activeOptions}"
filterMatchMode="exact" width="30">
<h:outputText value="#{item1.active}" />
</p:column>
</p:dataTable>
眼下這個代碼不工作,文本菜單從不更新rowSelect(菜單項「無效」始終啓用)。我猜想在特定行上顯示菜單的右鍵單擊事件並不會真正觸發rowSelect事件,即使該行被突出顯示。 這樣做的正確方法是什麼?
我曾嘗試這個解決方案,但我得到以下錯誤:treeMenu沒有定義。但它被定義爲上下文菜單的widgetVar的名稱。任何想法? – Zardo