簡體   English   中英

Primefaces dataTable過濾日期

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM