2015-12-14 53 views
3

我在PrimeFaces中使用Calendar时无法按表过滤。filterMatchMode lte和gte在p:dataTable的过滤器方面的p:calendar上不起作用

JAVA:

private Date creationDate; 
private Date dateFrom; 
private Date dateTo; 

XHTML(唯一的工作LT和GT /不灵LTE,GTE):

<p:column filterBy="#{tab.dateTo}" headerText="Date to" filterMatchMode="lte"> 
      <f:facet name="filter"> 
       <p:calendar pattern="yyyy-MM-dd"> 
        <p:ajax event="dateSelect" oncomplete="PF('datesTableDefinition').filter()"/> 
       </p:calendar> 
      </f:facet> 
      <p:outputLabel value="#{tab.dateTo}"> 
       <f:convertDateTime pattern="yyyy-MM-dd"/> 
      </p:outputLabel> 
     </p:column> 

我想获得==,<, >?

+0

可能是因为它的日期比较的都是时间感知(包括秒)? – antonu17

回答

0

你可以做到这一点,为我工作!

而不是filterMatchMode使用filterFunction="#{controller.filterByDate}"

public boolean filterByDate(Object value, Object filter, Locale locale) { 
    if(filter == null) { 
     return true; 
    } 

    if(value == null) { 
     return false; 
    } 

    return DateUtils.truncatedEquals((Date) filter, (Date) value, Calendar.DATE); 
} 

https://stackoverflow.com/a/30116077/3255595