簡體   English   中英

Primefaces 4.0數據表分頁和過濾器問題

[英]Primefaces 4.0 datatable pagination and filter issue

我有數據表,代碼在下面。

<h:form id="listaPoi">
            <p:dataTable id="lokacije" var="poi" value="#{poiBacking.listaPoiLokacija}" 
                rowIndexVar="rowIndex" styleClass="nonsortable" paginator="true" rows="20"
                paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                rowsPerPageTemplate="20,50,100" filteredValue="#{poiBacking.filteredPoi}"
                emptyMessage="Nisu pronađeni POI za traženi upit">
                <p:column filterBy="grad" filterMatchMode="contains">
                    <f:facet name="header">
                        <h:outputText value="Mjesto" />
                    </f:facet>
                    <h:outputText value="#{poi.grad}" />
                </p:column>

                <p:column filterBy="adresa" filterMatchMode="contains">
                    <f:facet name="header">
                        <h:outputText value="Adresa" />
                    </f:facet>
                    <h:outputText value="#{poi.adresa}" />
                </p:column>

                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Geolat" />
                    </f:facet>
                    <h:outputText value="#{poi.geolat}" />
                </p:column>

                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Geolon" />
                    </f:facet>
                    <h:outputText value="#{poi.geolon}" />
                </p:column>

                <p:column>
                    <f:facet name="header">
                    </f:facet>
                    <p:commandButton icon="ui-icon-pencil" value="Uredi lokaciju"
                        actionListener="#{poiBacking.getPois(poi.geolat,poi.geolon)}"
                        action="#{poiBacking.setLinkUpdate()}"
                        oncomplete="PF('poiDialog').show()" update=":unos,:poiDialogId,:toolbar" />
                </p:column>
            </p:dataTable>
        </h:form>

問題是當我單擊第二頁或任何其他頁面時,數據表僅顯示第一條記錄。 如果我過濾,結果是一樣的。 在后備bean列表中,過濾后的值包含所有值,但僅顯示第一個。

PoiBacking中的列表:

private List<PoiLokacija> listaPoiLokacija;
private List<PoiLokacija> filteredPoi;

listaPoiLokacija填寫@PostConstruct方法init()。

您沒有在PoiBacking給我們您的代碼,因此我不知道PoiBacking是否存在錯誤。

但是,我嘗試了您的代碼,發現一切正常。

檢查一下:

頁面(刪除oncomplete="PF('poiDialog').show()" update=":unos,:poiDialogId,:toolbar"因為我在您的代碼中找不到它們):

 <h:form id="listaPoi">
        <p:dataTable id="lokacije" var="poi" value="#{poiBacking.listaPoiLokacija}" 
            rowIndexVar="rowIndex" styleClass="nonsortable" paginator="true" rows="3"
            paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
            rowsPerPageTemplate="20,50,100" filteredValue="#{poiBacking.filteredPoi}"
            emptyMessage="Nisu pronađeni POI za traženi upit">
            <p:column filterBy="grad" filterMatchMode="contains">
                <f:facet name="header">
                    <h:outputText value="Mjesto" />
                </f:facet>
                <h:outputText value="#{poi.grad}" />
            </p:column>

            <p:column filterBy="adresa" filterMatchMode="contains">
                <f:facet name="header">
                    <h:outputText value="Adresa" />
                </f:facet>
                <h:outputText value="#{poi.adresa}" />
            </p:column>

            <p:column>
                <f:facet name="header">
                    <h:outputText value="Geolat" />
                </f:facet>
                <h:outputText value="#{poi.geolat}" />
            </p:column>

            <p:column>
                <f:facet name="header">
                    <h:outputText value="Geolon" />
                </f:facet>
                <h:outputText value="#{poi.geolon}" />
            </p:column>

            <p:column>
                <f:facet name="header">
                </f:facet>
                <p:commandButton icon="ui-icon-pencil" value="Uredi lokaciju"
                    actionListener="#{poiBacking.getPois(poi.geolat,poi.geolon)}"
                    action="#{poiBacking.setLinkUpdate()}"
                    />
            </p:column>
        </p:dataTable>
    </h:form>

支持Bean(因為您沒有提到,所以將PoiLokacija每個屬性都PoiLokacija為String):

private List<PoiLokacija> listaPoiLokacija=new ArrayList<>();
private List<PoiLokacija> filteredPoi=new ArrayList<>();

@PostConstruct
public void init(){

    listaPoiLokacija.add(new PoiLokacija("grad1", "adresa1", "geolat1", "geolon1"));
    listaPoiLokacija.add(new PoiLokacija("grad2", "adresa2", "geolat2", "geolon2"));
    listaPoiLokacija.add(new PoiLokacija("grad3", "adresa3", "geolat3", "geolon3"));
    listaPoiLokacija.add(new PoiLokacija("grad4", "adresa4", "geolat4", "geolon4"));
    listaPoiLokacija.add(new PoiLokacija("grad5", "adresa5", "geolat5", "geolon5"));
    listaPoiLokacija.add(new PoiLokacija("grad6", "adresa6", "geolat6", "geolon6"));
    filteredPoi.addAll(listaPoiLokacija);
}
public void getPois(String geolat,String geolon){
    System.out.println(geolat+","+geolon);
}
public void setLinkUpdate(){
    System.out.println("setLinkUpdate");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM