2011-10-06 75 views
0

我在裏面創建了一個帶有兩個dataTable的dataTable :)。當存在綁定屬性時,PrimeFaces dataTable不會呈現

但是這一次我遇到了問題,當我嘗試使用包裝第一個dataTable的h:panelGroup中的綁定屬性時出現問題。 我使用綁定來幫助刷新panelGroup,就像在this question中告訴的BalusC一樣。當我刪除綁定屬性dataTable正常呈現,但當然沒有什麼是與數據表中的f:ajax標記呈現。

這裏是XHTML:

<ui:component> 
<h:panelGroup> 
    <h:panelGroup layout="block;" id="#{id}" 
     binding="#{painelTabelaContatos}" rendered="true"> 
     <p:dataTable id="tabela#{id}" 
      value="#{modeloTabelaContatos.listaDeContatos}" var="contato" 
      selectionMode="single" 
      rowSelectListener="#{controladorTabelaContatos.processarSelecaoLinha}" 
      rowUnselectListener="#{controladorTabelaContatos.processarDeselecaoLinha}" 
      selection="#{modeloTabelaContatos.contatoSelecionado}"> 
      <p:column headerText="Contatos"> 
       <hrgi:editableText style="width:100%" value="#{contato.descricao}" /> 
      </p:column> 
      <p:column headerText="Telefones"> 
       <h:dataTable value="#{contato.telefones}" var="telefone"> 
        <h:column> 
         <h:inputText value="#{telefone}" /> 
        </h:column> 
        <h:column> 
         <h:graphicImage library="img" name="default_trash.png" 
          style="cursor:pointer;"> 
          <f:ajax event="click" render=":#{painelTabelaContatos.clientId}" 
           listener="#{controladorTabelaContatos.removerTelefone(contato, telefone)}" /> 
         </h:graphicImage> 
        </h:column> 
       </h:dataTable> 
      </p:column> 
      <p:column headerText="e-mails"> 
       <h:dataTable value="#{contato.emails}" var="email"> 
        <h:column> 
         <h:inputText value="#{email}" /> 
        </h:column> 
        <h:column> 
         <h:graphicImage library="img" name="default_trash.png" 
          style="cursor:pointer;"> 
          <f:ajax event="click" render=":#{painelTabelaContatos.clientId}" 
           listener="#{controladorTabelaContatos.removerEmail(contato, email)}" /> 
         </h:graphicImage> 
        </h:column> 
       </h:dataTable> 
      </p:column> 
      <p:column> 
       <h:graphicImage library="img" name="default_trash.png" 
        style="cursor:pointer;"> 
        <f:ajax render=":#{painelTabelaContatos.clientId}" event="click" 
         listener="#{controladorTabelaContatos.removerContato(contato)}" /> 
       </h:graphicImage> 
      </p:column> 
     </p:dataTable> 
    </h:panelGroup> 
    <h:panelGroup layout="block"> 
     <p:commandButton value="ADICIONAR CONTATO" update="#{id}" 
      immediate="true" 
      action="#{controladorTabelaContatos.adicionarContato}" /> 
     <p:commandButton value="ADICIONAR TELEFONE" update="#{id}" 
      immediate="true" 
      action="#{controladorTabelaContatos.adicionarTelefone}" /> 
     <p:commandButton value="ADICIONAR E-MAIL" update="#{id}" 
      immediate="true" 
      action="#{controladorTabelaContatos.adicionarEmail}" /> 
    </h:panelGroup> 
</h:panelGroup> 
</ui:component> 

我已經嘗試過刪除H:是裏面p數據表:dataTable的,但沒有成功。 此組件僅僅是PrimeFaces選項卡的內容,而此選項卡位於PrimeFaces對話框內。有人能解釋我爲什麼會發生這種情況?

+0

你提到它的工作?唯一的區別是您現在將''分配給動態ID而不是靜態ID。也許這個ID來自一個不再存在的源,當你發送ajax請求時? – BalusC

+0

是我的錯。我做錯了。 – brevleq

+0

幹得好,很好,你發佈它作爲答案:) – BalusC

回答

1

我找到錯誤的原因,很容易找到解決的辦法...... 的問題造成的,因爲我調用兩個不同的頁面此組件後:

popupCadastroPessoa.xhtml

<ui:include src="../tabs/abaEdicaoContatos.xhtml"> 
    <ui:param name="id" value="painelContatoPessoa" /> 
</ui:include> 

和popupCadastroFuncionario.xhtml

<ui:include src="../tabs/abaEdicaoContatos.xhtml"> 
    <ui:param name="id" value="painelContatoFuncionario" /> 
</ui:include> 

,因爲我並沒有真正創造的結合豆,JSF迷糊。所以我剛剛創建了兩個UIPanel豆,並通過它作爲參數:

<ui:include src="../tabs/abaEdicaoContatos.xhtml"> 
    <ui:param name="id" value="painelContatoPessoa" /> 
    <ui:param name="painelTabelaContatos" value="#{bindingTabelaContatoPessoa}"/> 
</ui:include> 

是我的錯。感謝您的關注,並對由此造成的不便深表歉意。

相關問題