У меня есть простая таблица данных с 3 столбцами, в которой отображаются объекты AccessCard. В одном столбце у меня есть «Статус», который может быть скажем «НЕАКТИВНЫЙ», «УДАЛЕННЫЙ» и т. Д. Очевидно, что эти значения получены из вспомогательного компонента.
Итак, если скажем #{card.accessCard.flgDeleted} == true
, то отображается «НЕАКТИВНО».
В контекстном меню у меня есть опция «Пометить как удаленную», которая устанавливает flgDeleted == false
. Я не хочу, чтобы опция удаления отображалась, если flgDeleted == false
.
С кодом, который я реализовал до сих пор, когда я выбираю строку с помощью ЛЕВОГО щелчка, все работает нормально. Когда я использую ПРАВЫЙ щелчок, чтобы выбрать строку и показать контекстное меню, в то же время кажется, что вспомогательный компонент не обновляется. Интересно, что если щелкнуть правой кнопкой мыши строку и фактически выбрать, скажем, «Пометить как удаленную», все будет в порядке.
<p:contextMenu id="contextMenu" for="cardTable">
<p:menuitem value="View Card History" icon="ui-icon-search"/>
<p:menuitem value="Flag as Deleted" icon="ui-icon-trash"
process="@form" update="@form" oncomplete="dlgDeleteCard.show()"
rendered="#{!card.accessCard.flgDeleted}" />
</p:contextMenu>
<h:panelGrid style="width:500px;">
<p:dataTable var="pc" id="cardTable" widgetVar="cardTable"
value="#{card.accessCardList}"
selectionMode="single" selection="#{card.accessCard}"
rowKey="#{pc.cardId}">
<p:ajax event="rowSelect" listener="#{card.onRowSelect}"
update="@form :messages" />
<p:column id="cardId" width="20%" headerText="Card Id">
<h:outputText value="#{pc.cardId}" />
</p:column>
<p:column id="cardHolderName" width="50%"
headerText="Current Holder">
<h:outputText value="#{pc.currentHolder}" />
</p:column>
<p:column id="cardStatus" width="10%" headerText="Status">
#{card.getCardStatus(pc)}
</p:column>
</p:dataTable>
</h:panelGrid>