当数据是日期但它适用于其他类型的数据时,我遇到了 filterBy 的问题,我使用了我已经在我的控制器中指定的 filterFunction 但它不起作用当我过滤时没有任何变化。这是我的代码:
我的 .xhtml 文件:
<p:column filterBy="#{deploiement.date_deploiement_test}"
sortBy="#{deploiement.date_deploiement_test}" headerText="date du déploiement version_test" filterFunction="#{listDeploiementController.filterByDate(value, filter, locale)}">
<h:outputText value="#{deploiement.date_deploiement_test}">
<f:convertDateTime pattern="dd-MM-yyyy HH:mm" />
</h:outputText>
</p:column>
我的控制器:
private static final Logger LOG = Logger.getLogger(ListDeploiementController.class.getName());
public boolean filterByDate(Object value, Object filter, Locale locale) {
String filterText = (filter == null) ? null : filter.toString().trim();
if (filterText == null || filterText.isEmpty()) {
return true;
}
if (value == null) {
return false;
}
DateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm");
Date filterDate = (Date) value;
Date dateFrom;
Date dateTo;
try {
String fromPart = filterText.substring(0, filterText.indexOf("-"));
String toPart = filterText.substring(filterText.indexOf("-") + 1);
dateFrom = fromPart.isEmpty() ? null : df.parse(fromPart);
dateTo = toPart.isEmpty() ? null : df.parse(toPart);
} catch (ParseException pe) {
LOG.log(Level.SEVERE, "unable to parse date: " + filterText, pe);
return false;
}
return (dateFrom == null || filterDate.after(dateFrom)) && (dateTo == null || filterDate.before(dateTo));
}
如果有人知道解决方案,请告诉我如何修复它,我的项目真的需要它。
谢谢你。