I came accross a particular problem. I have a datatable in which i want to filter dates in primefaces. when I use
<p:column id="date" headerText="Manufacturing date"
filterBy="#{car.dateOfManufacturing}"
filterMatchMode="contains">
<p:outputLabel value="#{car.dateOfManufacturing}" >
</p:outputLabel>
</p:column>
Then the filtering of dates happen fine. But when i use
<p:column id="date" headerText="Manufacturing date"
filterBy="#{car.dateOfManufacturing}"
filterMatchMode="contains">
<p:outputLabel value="#{car.dateOfManufacturing}" >
<f:convertDateTime locale="de" />
</p:outputLabel>
</p:column>
the filtering does not happen properly. In fact my observation is with the locale the date format is something like
20.11.2013
but even if I type Wed Nov .. i am able to see filtered results. I also observed that without locale the date is dispayed as
Wed Nov 20 13:43:37 CET 2013 So i guess it is getting filtered according the latter date even though we see a different date pattern on the screen.
I think need to convert your date before add to filter (filterBy="#{car.dateOfManufacturing}"
). One of the simple solution is convert date to string with simple date format in bean.
Here is my code:
My RowData containts: String entry1, String entry2, String dateString, Date date
.
My bean method for fill data:
public List<RowData> getTestData() {
DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
(...)
entries.add(new RowData("a1", "b1", dateFormat.format(new Date()), currentDate()));
(...)
return entries;
and my XHTML:
<p:column id="date" headerText="Simple date"
filterBy="#{entry.dateString}"
filterMatchMode="contains">
<p:outputLabel value="#{entry.dateString}" >
</p:outputLabel>
</p:column>
Now I add your code to my table:
<p:column id="dateLocale" headerText="Locale date"
filterBy="#{entry.date}"
filterMatchMode="contains">
<p:outputLabel value="#{entry.date}" >
<f:convertDateTime locale="de" />
</p:outputLabel>
</p:column>
My table:
Filtering works fine with these three date in locale date column. Perhaps, if I start test this issue with many date, the result will be same which described in your answer.
So, I offer covert date to string or use calendar.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With