Primefaces datatable date range filter with filterFunction

前端 未结 4 1456
栀梦
栀梦 2020-12-08 12:13

I use filterFunction method of datatable on primefaces 5.0. I want to filter birthday by date range on column header.

On browser console I receive this error:

<
4条回答
  •  半阙折子戏
    2020-12-08 13:02

    Advanced solution:

    JSF:

    
      
        
      
      
        
        

    Filter Bean:

    @Named
    @ApplicationScoped
    public class DateRangeFilter implements Serializable {
    
        private static final Logger LOG = Logger.getLogger(DateRangeFilter.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 = SimpleDateFormat.getDateInstance(SimpleDateFormat.MEDIUM);
    
            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));
        }
    }
    

提交回复
热议问题