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
0 Yorumlar