我有数据表,代码如下。
<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()。
答案 0 :(得分:0)
您没有在PoiBacking
向我们提供您的代码,因此我不知道PoiBacking
中是否有错误。
然而,我尝试了你的代码并发现每件事情都很好。
检查一下:
Page(已删除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>
Backing Bean(将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");
}