簡體   English   中英

Primefaces Datatable-排序不起作用

[英]Primefaces Datatable - Sorting doesn't work

我在JSF / xhtml頁面中遇到問題,我的primefaces數據表無法正確排序和過濾。 我從數據庫中填充數據表,效果很好。 但是,一旦我開始在過濾器中鍵入內容,或單擊列標題進行排序,所有條目就會消失。 我真的不知道我的錯誤在哪里。 這是JSF中數據表的代碼:

<p:dataTable var="c" value="#{proposalController.contractList}">

    <p:column  headerText="ID" sortBy="#{c.id}" filterBy="#{c.id}" filterMatchMode="contains">
        <h:outputText value="#{c.id}" />
    </p:column>

    <p:column headerText="Customer Name" sortBy="#{c.custName}" filterBy="#{c.custName}" filterMatchMode="contains">
        <h:outputText value="#{c.custName}" />
    </p:column>

    <p:column headerText="Asset" sortBy="#{c.asset}" filterBy="#{c.asset}" filterMatchMode="contains">
        <h:outputText value="#{c.asset}" />
    </p:column>


</p:dataTable>

這是其背后的Java代碼:

package controller;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import model.Contract;
import model.ContractManager;

@ManagedBean (name="proposalController")
@SessionScoped
public class proposalController {

    @EJB
    private ContractManager contract;
    private int id;
    private String custName;
    private String custStreet;
    private String custZIP;
    private String custCity;
    private int creditScore;
    private String custPers;
    private String mail;
    private String phone;
    private Date start;
    private Date endd;
    private String asset;
    private String insurance;
    private double rate;
    private String status;
    private List<Contract> contractList;  




    public List<Contract> getContractList() {
        this.contractList = contract.getContractList();
        return this.contractList;
    }

如果有人可以幫助我,那將是很好!

在您的getContractList()方法中,您從某些服務返回一個列表,每次調用該方法時,它可能都是一個新列表。 相反,您應該在初始化時從服務中一次獲取此列表(例如,某些@PostConstruct -annotated方法),將其保存在會話bean中,然后從會話bean返回列表。

像這樣:

@ManagedBean (name="proposalController")
@SessionScoped
public class proposalController {
    @EJB
    private ContractManager contract;

    private List<Contract> contractList;

    @PostConstruct
    public void init() {
        contractList = contract.getContractList();
    }

    public List<Contract> getContractList() {
        return this.contractList;
    }
}

暫無
暫無

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

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