在我的Jspresso应用程序中,我有一个带有startDate
和endDate
的实体。
我已经通过搜索用户必须输入的validityDate
在此实体上创建了一个过滤器模块。生成的查询应返回该validityDate
在startDate
和endDate
之间的实体的列表。 。
所以我自定义查询,这很好用。
不幸的是,筛选器视图显示由搜索运算符(validityDate
,<
,>
...)开头的between
字段,这与我的情况无关。所以我只是忽略查询中的运算符。
我想在视图中隐藏运算符,以便仅使用日期选择器显示日期。
最佳答案
我认为使用当前的Jspresso版本(截至目前为4.0.7)不容易实现这一目标。问题在于,负责将可比较的标量属性分解为(比较器,最小,最大)过滤结构的代码嵌套得太深,无法使用依赖注入将其覆盖:
方法如下:
protected boolean isPropertyFilterComparable(
IPropertyDescriptor propertyDescriptor) {
return propertyDescriptor instanceof INumberPropertyDescriptor
|| propertyDescriptor instanceof IDatePropertyDescriptor
|| propertyDescriptor instanceof ITimePropertyDescriptor
|| propertyDescriptor instanceof IDurationPropertyDescriptor;
}
位于
RefQueryComponentDescriptor
类中,该类的实例在运行时由BasicQueryComponentDescriptorFactory
构造,但使用私有方法(即createOrGetQueryComponentDescriptor
)。因此,即使您可以注入自己的BasicQueryComponentDescriptorFactory
定制实例,也必须复制/粘贴太多代码才能使用isPropertyFilterComparable
方法。由于您的用例非常有效,因此建议您在Jspresso GitHub上创建一个增强请求。
不太直接但更通用的方法可能是打开各种可比较的属性(数字,日期,时间和持续时间)以进行额外的自定义,以便告诉Jspresso在过滤器中添加这些属性时是否生成比较器结构视图。
就像是 :
date 'validityDate', filterComparable:true
但这需要更改SJS DSL。