2014-04-03 204 views
0

我開始在primefaces中,並且正在嘗試爲我的數據表創建一個可編輯對話框。當我編輯按鈕(datatable的頁腳)時,出現對​​話框,但不顯示所選行的值。怎麼了?可編輯對話框Primefaces

我的XHTML文件:

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:ui="http://java.sun.com/jsf/facelets" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:p="http://primefaces.prime.com.tr/ui" 
     xmlns:f="http://java.sun.com/jsf/core"> 

    <body> 

     <ui:composition template="./../WEB-INF/template_sistema.xhtml"> 

      <ui:define name="content"> 
       <h:form prependId="false"> 

        <p:dataTable id="dataTable" var="resultadoBanescap" value="#{lstResultados.resultadoBanescap}" 
           paginator="true" rows="10" 
           paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" 
           rowsPerPageTemplate="5,10,15,20" 
           emptyMessage="Não foram encontradas informações" 
           selection="#{resultadoBanescap.selecionado}" selectionMode="single"> 

         <p:column id="colunaNumero" 
            filterBy="#{resultadoBanescap.rbcnr}" 
            sortBy="#{resultadoBanescap.rbcnr}" 
            filterMatchMode="contains"> 
          <f:facet name="header"> 
           <h:outputText value="Número" /> 
          </f:facet> 
          <h:outputText value="#{resultadoBanescap.rbcnr}" /> 
         </p:column> 

         <p:column id="colunaDia" 
            filterBy="#{resultadoBanescap.tbResultadoBanescapPK.rbcdd}" 
            sortBy="#{resultadoBanescap.tbResultadoBanescapPK.rbcdd}" 
            filterMatchMode="contains"> 
          <f:facet name="header"> 
           <h:outputText value="Dia" /> 
          </f:facet> 
          <h:outputText value="#{resultadoBanescap.tbResultadoBanescapPK.rbcdd}" /> 
         </p:column> 

         <p:column id="colunaMes" 
            filterBy="#{resultadoBanescap.tbResultadoBanescapPK.rbcmm}" 
            sortBy="#{resultadoBanescap.tbResultadoBanescapPK.rbcmm}" 
            filterMatchMode="contains"> 
          <f:facet name="header"> 
           <h:outputText value="Mês" /> 
          </f:facet> 
          <h:outputText value="#{resultadoBanescap.tbResultadoBanescapPK.rbcmm}" /> 
         </p:column> 

         <p:column id="colunaAno" 
            filterBy="#{resultadoBanescap.tbResultadoBanescapPK.rbcaa}" 
            sortBy="#{resultadoBanescap.tbResultadoBanescapPK.rbcaa}" 
            filterMatchMode="contains"> 
          <f:facet name="header"> 
           <h:outputText value="Ano" /> 
          </f:facet> 
          <h:outputText value="#{resultadoBanescap.tbResultadoBanescapPK.rbcaa}" /> 
         </p:column> 

         <f:facet name="footer"> 
          <p:commandButton id="viewButton" 
              value="View" 
              update=":form:dataTable" 
              oncomplete="detalheDialog.show()" 
              onclick="detalheDialog.show()"/> 
         </f:facet> 

        </p:dataTable> 

        <p:dialog id="dialog" header="Detalhes" widgetVar="detalheDialog" resizable="false" 
           width="300" showEffect="clip" hideEffect="clip" modal="true" appendToBody="true"> 

         <h:form id="frmUpdate"> 
          <h:panelGrid id="display" columns="2" cellpadding="4"> 
           <h:outputText value="Número:" /> 
           <h:inputText value="#{lstResultados.selecionado.rbcnr}" /> 

           <h:outputText value="Dia:" /> 
           <h:inputText value="#{lstResultados.selecionado.tbResultadoBanescapPK.rbcdd}" /> 

           <h:outputText value="Mês:" /> 
           <h:inputText value="#{lstResultados.selecionado.tbResultadoBanescapPK.rbcmm}" /> 

           <h:outputText value="Ano:" /> 
           <h:inputText value="#{lstResultados.selecionado.tbResultadoBanescapPK.rbcaa}" /> 
          </h:panelGrid> 
         </h:form> 
        </p:dialog> 

       </h:form> 
      </ui:define> 

     </ui:composition> 

    </body> 
</html> 

我Bean文件:

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package br.com.banestes.ui.bean; 

import br.com.banestes.domain.TbResultadoBanescap; 
import br.com.banestes.domain.controller.TbResultadoBanescapJpaController; 
import java.util.List; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.RequestScoped; 

/** 
* 
* @author 030072182 
*/ 
@RequestScoped 
@ManagedBean(name = "lstResultados") 
public class ListResultados { 

    private List<TbResultadoBanescap> resultadoBanescap; 
    private TbResultadoBanescap selecionado; 

    public ListResultados() { 
     TbResultadoBanescapJpaController ctrl = new TbResultadoBanescapJpaController(); 
     resultadoBanescap = ctrl.findTbResultadoBanescapEntities(); 
    } 

    public List<TbResultadoBanescap> getResultadoBanescap() 
    { 
     return resultadoBanescap; 
    } 

    public TbResultadoBanescap getSelecionado() { 
     return selecionado; 
    } 

    public void setSelecionado(TbResultadoBanescap selecionado) { 
     this.selecionado = selecionado; 
    } 


} 

另一個問題是:有可能在另一個XHTML創建一個表單,在對話框中使用他?

回答

0

有幾件事情:

  1. 選定的行不會在對話框中顯示,因爲在你的頁腳中的按鈕被點擊時沒有更新對話框。你的更新應該是update=":form:dataTable :dialog"
  2. 除非你正在做與DataTable中的數據(我沒有看到它在你的代碼),你應該從你的更新中移除:form:dataTable以及東西。
  3. 在你<p:dataTable>,你是把選定的數據爲resultadoBanescap.selecionado。但是,在您的對話框中,您正在從讀取數據。檢查邏輯。
  4. 你應該把你的對話框從第一個表格中移出。
  5. 是的,可以在另一個xhtml文件中創建表單,然後使用<ui:include>將其添加到對話框中。
+0

非常感謝您的回覆,我會覈實你的上市itens。 – user1352652

+0

沒有工作。現在他傳入setSelecionado方法(以前不執行),但之後顯示對話框。 – user1352652