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