【问题标题】:Primefaces datePicker range filter end date issuePrimefaces datePicker范围过滤器结束日期问题
【发布时间】:2021-11-27 14:05:19
【问题描述】:

我正在使用 primefaces 10 数据表

我正在尝试过滤java.util.date 列,如下所示:

<p:column field="dateCreated" headerText="Request Date" filterMatchMode="range">
    <f:facet name="filter">
        <p:datePicker widgetVar="dateFilterWidget" pattern="yyyy/MM/dd"  selectionMode="range" onchange="dateFilterChange();">
          <f:convertDateTime type="date"  dateStyle="short" pattern="yyyy/MM/dd" />
        </p:datePicker>                             
    </f:facet>
    <h:outputText value="#{requestItem.dateCreated}">
        <f:convertDateTime pattern="yyyy/MM/dd hh:mm aa" locale="ar"/>
    </h:outputText>
</p:column>

ISSUE : 过滤器的作用是 date >= startDate 和 date

我希望它像这样工作:date >= startDate and date

示例:我在 10 月 1 日创建了请求,并在 10 月 7 日创建了请求 如果我选择范围:

2021/10/01 - 2021/10/07来自2021/10/07的请求未出现在过滤结果中

所以我尝试破解代码如下:

function dateFilterChange(){
             var datePicker = PF('dateFilterWidget');
             console.log(datePicker.getDate());
             if(datePicker.getDate() &amp;&amp; datePicker.getDate().length == 2 &amp;&amp; datePicker.getDate()[1]!= null){            
                 var endDate = datePicker.getDate()[1];
                 endDate.setHours(23, 59, 59);
                 console.log('endDate :'+endDate);
             }
             console.log(datePicker.getDate());             
             PF('inboxTableWidget').filter();
         }

但仍然得到相同的结果。

【问题讨论】:

    标签: javascript jsf primefaces datepicker


    【解决方案1】:

    您也可以选择在服务器端处理此问题。

    范围过滤器由org.primefaces.model.filter.RangeFilterConstraint 处理。您可以在项目中重载此类并修改isInRange 方法以按照您想要的方式检查Dates。

    或者,如果您使用的是LazyDataModel,只需对提供的org.primefaces.model.FilterMetaMatchMode RANGE 执行操作即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-05
      • 1970-01-01
      • 2014-11-17
      • 2019-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多