2012-06-22 30 views
5

Estoy utilizando Primefaces 3.3.1 y JSF 2 (Mojarra 2.1.9).Crear diálogos PrimeFaces dinámicamente

Tengo una página con un componente DataTable y Diálogo para mostrar los detalles de las entradas de DataTable. Eso es muy simple cuando tengo un diálogo. Lo que quiero es tratar de permitir a los usuarios abrir dos o tres dailogs con detalles de diferentes entradas al mismo tiempo. ¿Alguien tiene alguna idea de cómo obtener un diálogo completo con AJAX desde el servidor, no solo un contenido de diálogo?

+0

Duplicado de http://stackoverflow.com/questions/8682277/how-to-programmatically-add-dialogs-with-primefaces – rags

+1

Ya vi esa pregunta, pero mi problema es ligeramente diferente. La principal diferencia es que quiero permitir que el usuario abra más cuadros de diálogo al mismo tiempo, por lo que no puedo codificar los diálogos en la página. La única posibilidad es tener un diálogo para cada entrada en la tabla que no sea bueno debido a la sobrecarga de la red, y también imposible para la tabla cargada. – partlov

+0

¿Encontró una solución? – atamanroman

Respuesta

6

Sí, lo hice. Para este propósito creé los diálogos necesarios programáticamente en backing bean. Sé que esto no es realmente la mejor práctica, pero en este momento creo que esta es solo una solución posible. En primer lugar, agregué un panel de grupo que es contenedor para cuadros de diálogo en mi página JSF. A continuación, sobre las copias de frijol tengo algo de código como este:

valor widgetVar
UIComponent panelGroup = facesContext.getViewRoot().findComponent("panel_id"); 
Dialog dialog = new Dialog(); 
dialog.setHeader("Sample"); 
dialog.setVisible(true); 
dialog.setMinimizable(true); 
... 
panelGroup.getChildren().add(dialog); 
... 
RequestContext requestContext = RequestContext.getCurrentInstance(); 
requestContext.update("panel_id"); 
3

La identificación del cuadro de diálogo también puede ser dinámica para que pueda crear una identificación o algún otro valor y dársela.

<p:dialog header="Choose Delimiter Type" id="dialog" 
    widgetVar="exportDialog#{p.Id}" resizable="false" > 

y llamando mediante el botón;

<p:commandButton id="id" value="xxx" 
      actionListener="#{p.export2CSV}" ajax="false" 
      onclick="exportDialog#{p.tabId}.show()">     
     </p:commandButton> 
0

@newuserua El código no está trabajando setted sólo una vez cuando la carga de la página

... 
requestContext.update("panel_id"); 

el panel completo actualizado su refrescante línea por encima de todo el diálogo existente y sus contenidos.