Java PrimeFaces数据表右键单击选择+行特定上下文菜单

Java PrimeFaces数据表右键单击选择+行特定上下文菜单,java,jsf,primefaces,datatable,contextmenu,Java,Jsf,Primefaces,Datatable,Contextmenu,我有一个简单的datatable,有3列,它在一列中显示AccessCard实体。我有一个状态,可以说是INACTIVE、DELETED等。显然,这些值是从支持bean派生的 因此,如果假设{card.accessCard.flgDeleted}==true,则显示INACTIVE 在上下文菜单中,我有一个选项标记为Deleted,它设置flgDeleted==false。 如果flgDeleted==false,我不希望呈现delete选项 使用我迄今为止实现的代码,当我用鼠标左键选择行时,单

我有一个简单的datatable,有3列,它在一列中显示AccessCard实体。我有一个状态,可以说是INACTIVE、DELETED等。显然,这些值是从支持bean派生的

因此,如果假设{card.accessCard.flgDeleted}==true,则显示INACTIVE

在上下文菜单中,我有一个选项标记为Deleted,它设置flgDeleted==false。 如果flgDeleted==false,我不希望呈现delete选项

使用我迄今为止实现的代码,当我用鼠标左键选择行时,单击“一切正常”。当我使用右键单击选择一行并同时显示上下文菜单时,支持bean似乎没有更新。 有趣的是,如果右键单击一行并实际选择lets say Flag as Deleted,则一切都会很好

<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>  

如果仍有人需要,请使用:

<p:ajax event="contextMenu" update=":MyComponent"/>

我也有类似的问题,我通过将panelGrid中的contextMenu移动到dataTable之后来解决,然后我就不需要任何javascript攻击了。

哪个组件是MyComponent?如果是我第一篇文章,我想是关于PrimeFace 3.5,考虑到发布日期和问题日期。更新的版本应该可以。