在我的Jspresso应用程序中,我有一个startDate
和endDate
的实体。
我已在此实体上创建了一个过滤器模块,其中搜索了用户必须输入的validityDate
。生成的查询应返回此validityDate
介于{{1}之间的实体列表}和startDate
。
所以我自定义了查询,这很有效。
不幸的是,过滤视图会显示搜索运算符(endDate
,validityDate
,<
...)之前的>
字段,这与我的情况无关;所以我只是忽略查询中的运算符。
我想隐藏视图中的运算符,只有日期选择器。
答案 0 :(得分:0)
我认为使用当前的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。