2012-06-22 16 views
5

Utilizzo le primefaces 3.3.1 e JSF 2 (Mojarra 2.1.9).Creare dinamicamente le finestre di dialogo PrimeFaces

Ho una pagina con un componente DataTable e la finestra di dialogo per mostrare i dettagli delle voci DataTable. È molto semplice quando ho una finestra di dialogo. Quello che voglio è cercare di consentire agli utenti di aprire due o tre dailog con i dettagli di diverse voci nello stesso tempo. Qualcuno ha idea di come ottenere un'intera finestra di dialogo con AJAX dal server, non solo un contenuto di una finestra di dialogo?

+0

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

+1

Ho già visto questa domanda, ma il mio problema è leggermente diverso. La differenza principale è che voglio consentire all'utente di aprire più finestre di dialogo contemporaneamente, quindi non riesco a codificare i dialoghi sulla pagina. Solo la possibilità è di avere una finestra di dialogo per ogni voce nella tabella che non è buona a causa del sovraccarico della rete, e anche impossibile per la tabella caricata pigro. – partlov

+0

Hai trovato una soluzione? – atamanroman

risposta

6

Sì, sì. A tale scopo ho creato programmaticamente le finestre di dialogo necessarie nel backing bean. So che non è proprio una buona pratica, ma in questo momento penso che questa sia solo una possibile soluzione. Prima di tutto ho aggiunto un pannello di gruppo che è un contenitore per le finestre di dialogo sulla mia pagina JSF. Poi sul backup di fagioli ho qualche codice come questo:

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

L'ID di dialogo può anche essere dinamico in modo da poter creare qualche ID o qualche altro valore e darglielo.

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

e chiamata tramite pulsante;

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

@newuserua Il codice non funziona valore widgetVar è settata solo una volta quando caricamento della pagina

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

la versione aggiornata del pannello completa la sua rinfrescante sopra la linea tutto la finestra di dialogo esistente e il suo contenuto.

Problemi correlati