You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Primefaces DataTable右键菜单仅首次更新,后续失效求助

Primefaces DataTable右键菜单更新对话框面板失效问题

在Primefaces DataTable中使用ContextMenu时遇到以下问题:点击右键菜单的唯一选项后,会更新对话框内的面板并显示对话框,首次操作完全正常,但后续点击面板不再更新。

环境信息

  • Primefaces 11
  • Java 8
  • Wildfly 16

XHTML代码

<p:dataTable id="listadoJuegos" widgetVar="listadoJuegosWV" stickyHeader="true" stickyTopAt=".layout-topbar"
            value="#{juegosBean.listaJuegos}" var="juego" rowIndexVar="index" selectionMode="single" selection="#{juegosBean.juegoSeleccionado}"
            emptyMessage="#{messages['listado.VACIO']}" rows="10" rowKey="#{juego.idJuego}"
            styleClass="grupoCentrado" style="width:100%;" paginator="true" paginatorPosition="bottom"
            paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
            currentPageReportTemplate="{startRecord}-{endRecord} de {totalRecords} registros">

....

</p:dataTable>
        
        <p:contextMenu for="listadoJuegos" styleClass="contextMenu">
            <p:menuitem value="#{messages['listado.acciones.EDITAR']}" icon="pi pi-file-o" update="form:detalleJuego" actionListener="#{juegosBean.accionEditarJuego}" oncomplete="PF('editarJuegoDialog').show();"/>
        </p:contextMenu>
        
        <p:dialog header="#{messages['juego.editar.HEADER']}" widgetVar="editarJuegoDialog" modal="true" showEffect="fade"
                  hideEffect="fade" resizable="false">
            <p:outputPanel id="detalleJuego" style="text-align:center;">
                <p:column rendered="#{not empty juegosBean.juegoSeleccionado}">
                    <p:panelGrid columns="2">
                        <h:outputText value="#{messages['listado.NOMBRE']}"/>
                        <p:inputText value="#{juegosBean.juegoSeleccionado.nombre}"/>
                    </p:panelGrid>
                </p:column>
            </p:outputPanel>
        </p:dialog>

Bean代码

@ManagedBean(name = "juegosBean")
@ViewScoped
public class JuegosBean implements Serializable{
    
    private static final Logger LOGGER = Logger.getLogger(JuegosBean.class);
    
    private static final long serialVersionUID = -5102818290267794138L;

    private List<Juego> listaJuegos;
    
    @ManagedProperty("#{fachada}")
    private Fachada fachada;
    
    private Juego juegoSeleccionado;
    
    
    @PostConstruct
    public void init() {
        listaJuegos = fachada.obtenerJuegos();
        Collections.sort(listaJuegos, new Comparator<Juego>() {

            @Override
            public int compare(Juego juego, Juego juego2) {
                return juego.getPosicion().compareTo(juego2.getPosicion());
            }
            
        });
    }
    
    public void accionEditarJuego() {

    }

    public List<Juego> getListaJuegos() {
        return listaJuegos;
    }
    
    
    public void setFachada(Fachada fachada) {
        this.fachada = fachada;
    }
    
    public Juego getJuegoSeleccionado() {
        LOGGER.info(" GET " + (juegoSeleccionado != null ? juegoSeleccionado.getPosicion() : ""));
        return juegoSeleccionado;       
    }
    
    
    public void setJuegoSeleccionado(Juego juegoSeleccionado) {
        LOGGER.info(" SET " + (juegoSeleccionado != null ? juegoSeleccionado.getPosicion() : ""));
        this.juegoSeleccionado = juegoSeleccionado;     
    }
    
}

日志信息

首次点击(显示条目1的信息,正常显示):

2024-08-23 20:20:34 INFO  JuegosBean:99 -  SET 1
2024-08-23 20:20:34 INFO  JuegosBean:88 -  GET 1
2024-08-23 20:20:34 INFO  JuegosBean:88 -  GET 1
2024-08-23 20:20:34 INFO  JuegosBean:88 -  GET 1
2024-08-23 20:20:34 INFO  JuegosBean:88 -  GET 1
2024-08-23 20:20:34 INFO  JuegosBean:88 -  GET 1
2024-08-23 20:20:34 INFO  JuegosBean:88 -  GET 1
2024-08-23 20:20:34 INFO  JuegosBean:88 -  GET 1
2024-08-23 20:20:34 INFO  JuegosBean:88 -  GET 1

第二次点击(应显示条目8的信息,却显示条目1):

2024-08-23 20:21:12 INFO  JuegosBean:99 -  SET 8
2024-08-23 20:21:12 INFO  JuegosBean:88 -  GET 8
2024-08-23 20:21:12 INFO  JuegosBean:88 -  GET 8
2024-08-23 20:21:12 INFO  JuegosBean:88 -  GET 8
2024-08-23 20:21:12 INFO  JuegosBean:88 -  GET 8
2024-08-23 20:21:12 INFO  JuegosBean:88 -  GET 8
2024-08-23 20:21:12 INFO  JuegosBean:88 -  GET 8
2024-08-23 20:21:12 INFO  JuegosBean:88 -  GET 8
2024-08-23 20:21:12 INFO  JuegosBean:88 -  GET 8
2024-08-23 20:21:12 INFO  JuegosBean:88 -  GET 8
2024-08-23 20:21:12 INFO  JuegosBean:88 -  GET 8
2024-08-23 20:21:12 INFO  JuegosBean:88 -  GET 8
2024-08-23 20:21:12 INFO  JuegosBean:88 -  GET 8

日志显示Bean的set/get逻辑正常,数据已更新,但界面未同步。请问哪里操作有误?

内容的提问来源于stack exchange,提问作者Blrackerd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 08:44:52