首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Jspresso中创建一个筛选器视图,其中包含没有比较运算符的日期选择器

在Jspresso中创建一个筛选器视图,其中包含没有比较运算符的日期选择器
EN

Stack Overflow用户
提问于 2015-04-02 16:48:31
回答 1查看 97关注 0票数 1

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

不幸的是,filter视图显示搜索运算符(<>between…)前面的<字段。这与我的情况无关;所以我简单地忽略了查询中的操作符。

我想隐藏运算符在视图中,只有日期与日期选择器。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-02 21:06:12

我认为使用当前的Jspresso版本(到目前为止是4.0.7)是不容易实现的。问题是,负责将可比标量属性爆炸为(比较器、最小、最大)过滤结构的代码嵌套得太深,无法使用依赖项注入覆盖该结构:

以下方法:

代码语言:javascript
运行
复制
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在将这些属性添加到筛选器视图时是否生成比较器结构。

类似于:

代码语言:javascript
运行
复制
date 'validityDate', filterComparable:true

但这将需要改变SJS DSL。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29418226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档