数据表为空但selectableDataModel具有内容

时间:2015-12-02 11:28:54

标签: jsf primefaces datamodel

运行方法cercaParametriPratica()后,DataTable似乎是空的,但DataModel包含结果(我打印outputLabel中的记录数)。

有人可以帮我这个吗?我似乎无法找到解决此问题的任何方法,也无法在算法中找到错误。

使用PrimeFaces 3.5

我的代码:

public String cercaParametriPratica() {

    String idCostante= this.getFiltroParametri().getCostanteFiltro();
    List<ConfigParamCalcParametro> listaParametri = null;
    ParametriCalcoloDataModel parametriModel = null;


        Integer annoMin = this.getFiltroParametri().getAnnoMin();
        Integer annoMax = this.getFiltroParametri().getAnnoMax();

        try {

            listaParametri = this.getPersistenceFacade().ricercaParametriFiltrata(
                    this.pratica.getNumeroPratica(), idCostante, annoMin, annoMax);
            parametriModel = new ParametriCalcoloDataModel(listaParametri);

        } catch(DatabaseException dbe) {
            log.error("Errore ricerca pratica {}", this.filtroPratica.getNumeroPratica(), dbe);
            FacesContext.getCurrentInstance().addMessage(null,
                    new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Errore!", "Errore nel ricerca dei Parametri di Calcolo."));
        }
return "gotoHome";

}

public class ParametriCalcoloDataModel扩展了ListDataModel实现 SelectableDataModel,java.io.Serializable {

/**
 * 
 */
private static final long serialVersionUID = 298627650136646161L;
private Map<String, ConfigParamCalcParametro> map;

public ParametriCalcoloDataModel(List<ConfigParamCalcParametro> data) {  
    super(data);
    map = new HashMap<String, ConfigParamCalcParametro>();
    for(ConfigParamCalcParametro item : data) {
        if(item != null)
        {
        map.put((String)getRowKey(item), item);
        }
    }
}  

@Override  
public ConfigParamCalcParametro getRowData(String rowKey) {  
    return map.get(rowKey);
}  

@Override  
public Object getRowKey(ConfigParamCalcParametro log) {  
    String key;
    StringBuilder sb = new StringBuilder();
    sb.append(log.getMeseRifIniz());
    sb.append(log.getAnnoRifIniz());
    sb.append(log.getIdCostante());

    key = sb.toString();

    return key;  
}

public int size(){

    return this.map.size();
}

}

   
<pf:dataTable id="listaParametriDataTable" widgetVar="datatable" value="#{configParamCalcSrv.parametriModel}" selection="#{configParamCalcSrv.selection}" var="paramCalc" selectionMode="single" scrollable="true" scrollWidth="99%" resizableColumns="true"
            paginator="true" lazy="true" rows="10" rowIndexVar="rowIndex" paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="5,10,15,20" currentPageReportTemplate="Tot: {totalRecords}">

              <pf:column id="valoreColumn" sortBy="#{paramCalc.valore}">
                <f:facet name="header" style="text-align: right;">
                  <h:outputText id="valoreLabel" styleClass="outputText" value="Valore" />
                </f:facet>
                <h:outputText id="valoreText" styleClass="outputText" value="#{paramCalc.valore}">
                  <f:convertNumber locale="it_IT" maxFractionDigits="4" />
                </h:outputText>
              </pf:column>

              <pf:column id="meseRifInizColumn" sortBy="#{paramCalc.meseRifIniz}" style="text-align: center;">
                <f:facet name="header">
                  <h:outputText id="meseRifInizLabel" styleClass="outputText" value="Mese Iniz. Periodo" />
                </f:facet>
                <h:outputText id="meseRifInizText" styleClass="outputText" value="#{paramCalc.meseRifIniz}" />
              </pf:column>
              <pf:column id="annoRifInizColumn" sortBy="#{paramCalc.annoRifIniz}" style="text-align: center;">
                <f:facet name="header">
                  <h:outputText id="annoRifInizLabel" styleClass="outputText" value="Anno Iniz. Periodo" />
                </f:facet>
                <h:outputText id="annoRifInizText" styleClass="outputText" value="#{paramCalc.annoRifIniz}" />
              </pf:column>
              <pf:column id="meseRifFineColumn" sortBy="#{paramCalc.meseRifFine}" style="text-align: center;">
                <f:facet name="header">
                  <h:outputText id="meseRifFineLabel" styleClass="outputText" value="Mese Fine Periodo" />
                </f:facet>
                <h:outputText id="meseRifFineText" styleClass="outputText" value="#{paramCalc.meseRifFine}" />
              </pf:column>
              <pf:column id="annoRifFineColumn" sortBy="#{paramCalc.annoRifFine}" style="text-align: center;">
                <f:facet name="header">
                  <h:outputText id="annoRifFineLabel" styleClass="outputText" value="Anno Fine Periodo" />
                </f:facet>
                <h:outputText id="annoRifFineText" styleClass="outputText" value="#{paramCalc.annoRifFine}" />
              </pf:column>
              <pf:column id="utenteColumn" sortBy="#{paramCalc.utente}" style="text-align: center;">
                <f:facet name="header">
                  <h:outputText id="utenteModLabel" styleClass="outputText" value="Utente Ult. Mod." />
                </f:facet>
                <h:outputText id="utenteModText" styleClass="outputText" value="#{paramCalc.utenteMod}" />
              </pf:column>
              <pf:column id="dataModColumn" sortBy="#{paramCalc.dataMod}" style="text-align: center;">
                <f:facet name="header">
                  <h:outputText id="dataModLabel" styleClass="outputText" value="Data Ult. Mod." />
                </f:facet>
                <h:outputText id="dataModText" styleClass="outputText" value="#{paramCalc.dataMod}" converter="calendarCustomConverter" pattern="dd/MM/yyyy" />
              </pf:column>

            </pf:dataTable>

0 个答案:

没有答案