gpt4 book ai didi

java - 在 Jspresso 中创建一个过滤器 View ,其中包含不带比较运算符的日期选择器

转载 作者:太空宇宙 更新时间:2023-11-04 13:59:48 25 4
gpt4 key购买 nike

在我的 Jspresso 应用程序中,我有一个带有 startDate 的实体和endDate 。我已经在该实体上创建了一个过滤器模块,并在 validityDate 上进行搜索。用户必须输入的内容。生成的查询应返回此 validityDate 的实体列表。介于startDate之间和endDate 。所以我自定义了查询,效果很好。

不幸的是,过滤器 View 显示 validityDate字段前面是搜索运算符( <>between …),这与我的情况无关;所以我只是忽略查询中的运算符。

我想在 View 中隐藏运算符,以便仅使用日期选择器显示日期。

最佳答案

我认为使用当前的 Jspresso 版本(目前为 4.0.7)可以轻松实现这一点。问题在于,负责将可比较标量属性分解为(比较器、最小值、最大值)过滤结构的代码嵌套得太深,无法使用依赖项注入(inject)进行覆盖:

以下方法:

protected boolean isPropertyFilterComparable(
IPropertyDescriptor propertyDescriptor) {
return propertyDescriptor instanceof INumberPropertyDescriptor
|| propertyDescriptor instanceof IDatePropertyDescriptor
|| propertyDescriptor instanceof ITimePropertyDescriptor
|| propertyDescriptor instanceof IDurationPropertyDescriptor;
}

位于 RefQueryComponentDescriptor 类中,其实例由 BasicQueryComponentDescriptorFactory 在运行时构建,但采用私有(private)方法(即 createOrGetQueryComponentDescriptor)。因此,即使您可以注入(inject)自己定制的 BasicQueryComponentDescriptorFactory 实例,您也必须复制/粘贴太多代码才能到达 isPropertyFilterComparable 方法。

由于您的用例完全有效,我建议您在 Jspresso GitHub 上创建增强请求.

一种不太简单但更通用的方法可能是打开各种可比较的属性(数字、日期、时间和持续时间)进行额外的自定义,以便告诉 Jspresso 在将这些属性添加到过滤器 View 中时是否生成比较器结构。

类似于:

date 'validityDate', filterComparable:true

但这需要对 SJS DSL 进行更改。

关于java - 在 Jspresso 中创建一个过滤器 View ,其中包含不带比较运算符的日期选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29418226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com