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
相关产品推荐
相关产品推荐

