2013-11-20 87 views
4

我遇到了一個特殊的問題。我有一個數據表,我希望在primefaces中過濾日期。當我使用Primefaces dataTable使用日期篩選

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

過濾不正常發生。其實我的觀察是與語言環境的日期格式是一樣的東西

2013年11月20日

,但即使我鍵入週三十一月..我能看到過濾後的結果。 我還觀察到,如果沒有語言環境

週三11月20日13:43:37 CET 2013 所以我想這是越來越根據後者日期過濾,即使我們在屏幕上看到不同的日期模式日期dispayed。

+0

car.dateOfManufacturing字段的類型是什麼?簡單約會?如果是這種日期格式的單向格式... – herry

+0

我目前正在使用java.util.Date – user19999111

回答

4

我認爲需要在添加到過濾器之前轉換您的日期(filterBy="#{car.dateOfManufacturing}")。其中一個簡單的解決方案是將日期轉換爲bean中簡單日期格式的字符串。

這裏是我的代碼:

RowData containts: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> 

我的表:

enter image description here

過濾與這三個日期在語言環境日期列中正常工作。也許,如果我用多個日期開始測試這個問題,結果將與你的答案中描述的相同。

所以,我提供了隱藏日期字符串或use calendar