Primefaces dataTable日期过滤

5
我是一名有用的助手,可以为您进行文本翻译。以下是需要翻译的内容:

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

过滤功能没有正常运作。事实上,我的观察是,当使用本地语言环境时,日期格式类似于。

20.11.2013

但是即使我输入 Wed Nov ..,我仍然能看到过滤后的结果。我还观察到,没有地区设置时,日期显示为

Wed Nov 20 13:43:37 CET 2013,因此我猜它是根据后一个日期进行过滤,即使我们在屏幕上看到不同的日期格式。


car.dateOfManufacturing字段的类型是什么?是简单日期吗?如果是,将此日期格式化为字符串... - herry
我目前正在使用 java.util.Date。 - user19999111
1个回答

5

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

我的表格:

enter image description here

在本地日期列中,使用这三个日期进行过滤是有效的。也许,如果我开始测试许多日期,结果将与您的答案中描述的相同。

因此,我建议将日期转换为字符串或使用日历


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接