PrimeFaces Datatable date filter (Tarih Filtreleme)


Merhaba,

PrimeFaces Datatable'da tarih filtrelemesi yapılamıyor. Bunun için farklı bir yöntem kullanarak çözdüm. Öncelikle Entity'de veritabanında olmayan bir alan oluşturup bu alan üzerinden filtreleme yapmamız gerekecektir. Bunu @Transient ile yapabiliriz. @Transient Entity'lerin veritabanı ile eşleştirilmesinde gözardı edilmesi için kullanılan annotationdır.

Entity
    @Column(name = "SALES_DATE")
    @Temporal(TemporalType.DATE)
    private Date salesDate;

    public Date getSalesDate() {
        return salesDate;
    }

    public void setSalesDate(Date salesDate) {
        this.salesDate = salesDate;
    }

    @Transient
    private String dateFilter;
    
    public String getDateFilter() {
        return new SimpleDateFormat("dd/MM/yyyy").format(salesDate);
    }

    public void setDateFilter(String dateFilter) {
        this.dateFilter = dateFilter;
    }

xhtml

Düzenlenmeden Önce
                <p:column sortBy="#{item.salesDate}" filterBy="#{item.salesDate}" filterMatchMode="contains" >
                    <f:facet name="header">
                        <h:outputText value="#{bundle.ListPurchaseOrderTitle_salesDate}"/>
                    </f:facet>
                    <h:outputText value="#{item.salesDate}">
                        <f:convertDateTime pattern="dd/MM/yyyy" />
                    </h:outputText>
                </p:column>

Düzenlendikten sonra
                <p:column sortBy="#{item.dateFilter}" filterBy="#{item.dateFilter}" filterMatchMode="contains" >
                    <f:facet name="header">
                        <h:outputText value="#{bundle.ListPurchaseOrderTitle_salesDate}"/>
                    </f:facet>
                    <h:outputText value="#{item.dateFilter}" />
                </p:column>



Yapacağımız işlem bu kadar aşağıda görüldüğü üzere çalışıyor


Yorum Gönder

0 Yorumlar