2012-12-26 30 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

谢谢,我编辑的问题,我的代码,你可以帮我吗? –