【问题标题】:Primefaces dataTable filtering with datePrimefaces dataTable过滤日期
【发布时间】:2013-12-04 13:56:51
【问题描述】:

我遇到了一个特殊的问题。我有一个数据表,我想在其中过滤 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>

过滤没有正确进行。事实上,我的观察是使用语言环境,日期格式类似于

2013 年 11 月 20 日

但即使我输入 Wed Nov .. 我也能看到过滤后的结果。 我还观察到,没有语言环境,日期显示为

2013 年 11 月 20 日星期三 13:43:37 CET 所以我猜它会根据后一个日期被过滤,即使我们在屏幕上看到不同的日期模式。

【问题讨论】:

  • car.dateOfManufacturing 字段的类型是什么?简单的约会?如果这是将此日期格式化为字符串的一种方式...
  • 我目前正在使用 java.util.Date

标签: date jsf-2 primefaces filter datatable


【解决方案1】:

我认为在添加到过滤器之前需要转换您的日期 (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>

我的桌子:

过滤适用于语言环境日期列中的这三个日期。也许,如果我用多个日期开始测试这个问题,结果将与您的答案中描述的相同。

所以,我提供隐蔽日期到字符串或use calendar

【讨论】:

    猜你喜欢
    • 2011-10-18
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多