[英]Primefaces dataTable filtering with date
我遇到了一個特定的問題。 我有一個數據表,我想要在primefaces中過濾日期。 我用的時候
<p:column id="date" headerText="Manufacturing date"
filterBy="#{car.dateOfManufacturing}"
filterMatchMode="contains">
<p:outputLabel value="#{car.dateOfManufacturing}" >
</p:outputLabel>
</p:column>
然后過濾日期就好了。 但是當我使用時
<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>
過濾不正確。 事實上,我的觀察結果與日期格式類似
二〇一三年十一月二十零日
但即使我輸入Wed Nov ..我也能看到過濾結果。 我還觀察到,如果沒有區域設置,則日期會被顯示為
11月20日星期三13:43:37 CET 2013所以我想即使我們在屏幕上看到不同的日期模式,它也會根據后一個日期進行過濾。
我認為需要在添加到過濾器之前轉換您的日期( filterBy="#{car.dateOfManufacturing}"
)。 其中一個簡單的解決方案是將日期轉換為bean中簡單日期格式的字符串。
這是我的代碼:
我的RowData包含 : String entry1, String entry2, String dateString, Date date
。
我的填充數據bean方法:
public List<RowData> getTestData() {
DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
(...)
entries.add(new RowData("a1", "b1", dateFormat.format(new Date()), currentDate()));
(...)
return entries;
和我的XHTML:
<p:column id="date" headerText="Simple date"
filterBy="#{entry.dateString}"
filterMatchMode="contains">
<p:outputLabel value="#{entry.dateString}" >
</p:outputLabel>
</p:column>
現在我將你的代碼添加到我的表中:
<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>
我的桌子:
過濾在區域設置日期列中與這三個日期一起正常工作。 也許,如果我開始使用許多日期測試此問題,結果將與您的答案中描述的結果相同。
所以,我提供隱藏日期字符串或使用日歷 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.