1

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

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

我想将操作员隐藏在视图中,以便仅使用日期选择器显示日期。

4

1 回答 1

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。

于 2015-04-02T21:06:12.877 回答