在我的Jspresso应用程序中,我有一个带有startDateendDate的实体。
我已经通过搜索用户必须输入的validityDate在此实体上创建了一个过滤器模块。生成的查询应返回该validityDatestartDateendDate之间的实体的列表。 。
所以我自定义查询,这很好用。

不幸的是,筛选器视图显示由搜索运算符(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。

07-24 09:17