2012-12-26 29 views
0

我試圖讓該代碼工作:數據表爲主,對話的細節

<?xml version="1.0" encoding="UTF-8"?> 
<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:p="http://primefaces.org/ui" 
    template="/templates/default.xhtml"> 

    <ui:define name="content"> 

     <h:form id="form">  

      <p:dataTable id="clienti" var="c" value="#{clientiController.clienti}" rowKey="#{c.id}"> 

       <p:column headerText="Ragione sociale"> 
        <h:outputText value="#{c.ragioneSociale}" /> 
       </p:column> 
       <p:column headerText="Codice fiscale"> 
        <h:outputText value="#{c.codiceFiscale}" /> 
       </p:column> 

       <p:column style="width:4%"> 
        <p:commandButton 
         update=":formDialog:clienteEditDialogTable" 
         oncomplete="clienteEditDialog.show()" 
         value="Modifica" 
         title="Modifica"> 
          <f:setPropertyActionListener value="#{c}" target="#{clientiController.clienteSelezionato}" /> 
        </p:commandButton> 
       </p:column> 

      </p:dataTable>   

      <p:commandButton value="Aggiorna" actionListener="#{clientiController.aggiorna}" update=":form:clienti" icon="ui-icon-arrowrefresh-1-n" /> 
      <p:commandButton value="Nuovo Cliente" actionListener="#{clientiController.nuovo}" update=":formDialog:clienteEditDialogTable" oncomplete="clienteEditDialog.show()" /> 

     </h:form> 

      <p:dialog 
       header="Modifica Cliente" 
       widgetVar="clienteEditDialog" 
       id="clienteEditDialog" 
       showEffect="fade" 
       hideEffect="explode" 
       closable="true" 
       modal="true" 
       appendToBody="true"> 

        <h:form id="formDialog">   

        <h:panelGrid id="clienteEditDialogTable" columns="2" cellpadding="10" style="margin:0 auto;"> 

         <p:outputLabel for="fieldNome" value="Ragione Sociale:" /> 
         <p:inputText id="fieldNome" value="#{clientiController.clienteSelezionato.ragioneSociale}" /> 

         <p:outputLabel for="fieldCodice" value="Codice:" /> 
         <p:inputText id="fieldCodice" value="#{clientiController.clienteSelezionato.codiceFiscale}" required="true" requiredMessage="Codice fiscale obbligatorio" /> 


        </h:panelGrid> 

        <p:commandButton 
         value="Conferma modifiche" 
         actionListener="#{clientiController.modifica}" 
         update=":form:clienti" 
         oncomplete="clienteEditDialog.hide()" 
         rendered="#{clientiController.clienteSelezionato.id!=null}" /> 

        <p:commandButton 
         value="Conferma nuovo cliente" 
         actionListener="#{clientiController.crea}" 
         update=":form:clienti" 
         oncomplete="clienteEditDialog.hide()" 
         rendered="#{clientiController.clienteSelezionato.id==null}" /> 

        </h:form> 

      </p:dialog> 

    </ui:define> 

</ui:composition> 

通過點擊「諾沃Cliente」我得到一個JavaScript控制檯錯誤:

TypeError: 'undefined' is not a function (evaluating 'clienteEditDialog.show()')

這是一個命名容器誤解當然。 你能幫我給出正確的ID嗎?

回答

1

在舊primefaces版本沒有人能爲widgetVar和的p:dialog

id分配相同的名字嘗試改變id="clienteEditDialog"id="clienteEditDialogId"

1

您正在引用來自不同命名容器的clienteEditDialogTable。實際ID爲 :formDialog:clienteEditDialogTable,請嘗試使用它。 Id可以不同,但​​在給出模板源代碼後,我可以告訴你更多。

+0

謝謝,我編輯的問題,我的代碼,你可以幫我嗎? –