javascript - Primefaces datePicker范围过滤器结束日期问题
问题描述
我正在使用 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 < endDate
我希望它像这样工作:date >= startDate 和 date <= endDate
示例:如果我选择以下范围,我将在 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() && datePicker.getDate().length == 2 && 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();
}
但仍然得到相同的结果。
解决方案
您也可以选择在服务器端处理此问题。
范围过滤器由 处理org.primefaces.model.filter.RangeFilterConstraint
。您可以在项目中重载此类并修改方法以按照您想要的方式isInRange
检查s。Date
或者,如果您使用的是LazyDataModel
,只需对提供org.primefaces.model.FilterMeta
的 进行操作MatchMode
RANGE
。
推荐阅读
- python - Pandas - 内部的 Lambda 应用返回一行
- sql - 更新另一个表中的值
- python-3.x - 0001:循环,提问直到有效响应
- javascript - Vue:如何根据 RadioButton 选择显示不同的图像
- xcode - 无法在 mac 上安装 hyper kit,因为它在 brew intall 期间显示错误
- android - 从数据有效负载构造通知
- ios - 如何在 SWIFT 中设计类似组合框的文本字段或按钮
- sql - 用名称中的句点重命名clickhouse中的列
- javascript - 检查用户是否正在与 $in 运算符进行对话
- javascript - 基于组的对象组数组