2014-07-15 12 views
6

Sto costruendo sito Web utilizzando primefaces 5 e server wildfly. Ho un problema con l'utilizzo del componente. Ho con in ogni riga come segue. Il pulsante ha definito la proprietà actionlistener che richiama il metodo backing bean e dopo di ciò dovrebbe visualizzare la finestra di dialogo. Ecco alcuni codici:Finestra di dialogo Primefaces 5.0 widgetvar

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
       xmlns:ui="http://xmlns.jcp.org/jsf/facelets" 
       xmlns:h="http://xmlns.jcp.org/jsf/html" 
       xmlns:p="http://primefaces.org/ui" 
       xmlns:pt="http://java.sun.com/jsf/composite/components" 
       template="../templates/mainTemplate.xhtml"> 

    <ui:define name="title"></ui:define> 

    <ui:define name="main-content"> 

     <h:form> 
      <p:dataTable id="dataTable" value="#{bean.list}" var="item" 
         styleClass="hide-column-header small-text"> 

       <!-- some columns --> 

       <p:column style="width: 18%; text-align: center;"> 
        <p:commandButton value="Open dialog" actionListener="#{bean.buttonListener(item)}" oncomplete="PF('dlg').show();"/> 
       </p:column> 

      </p:dataTable> 
     </h:form> 

     <p:dialog id="dialog" widgetVar="dlg" resizable="false" modal="true" 
        header="Dialog"> 
      <h:form> <!-- some inputs --> </h:form> 
     </p:dialog> 
    </ui:define> 

</ui:composition> 

Ma non funziona. Controllo la console di Chrome e ho ricevuto il messaggio "Widget per var 'Widget per var' dlg 'non disponibile!" quando si fa clic sul pulsante, ho controllato "Primefaces.widgets" e in effetti non c'è alcun widget per la mia finestra di dialogo. Qualcuno mi può aiutare con questo?

// modifica
Ok, finalmente l'ho fatto funzionare. Per tentativi ho trovato questa riga nel mio modello:

<script type="text/javascript" src="//code.jquery.com/jquery-2.1.1.min.js"></script> 

Dopo averlo rimosso, tutto ha funzionato come previsto. Penso che sia perché le primeface hanno una propria versione di jquery, giusto?

+0

Puoi provare PF (': DLG')? – adam0404

+0

Il tuo caso è molto semplice, dovrebbe funzionare. Controlla se hai errori javascript sul caricamento della pagina. –

+0

puoi anche postare il tuo codice 'bean'? – alex

risposta

5

Primefaces ha già un jQuery, quindi è molto consigliabile non utilizzare un'altra libreria jQuery mentre si lavora con Primefaces.

Provare a rimuovere la libreria jQuery esterna e chiamare la finestra di dialogo con il comando PF ('dlg'). Show();

È possibile controllare questo e altri cambiamenti nella guida alla migrazione a: https://code.google.com/p/primefaces/wiki/MigrationGuide

+0

ha funzionato per me! Grazie. – Dandelion

Problemi correlati