在我的Jspresso应用程序中,我有一个带有startDate和endDate的实体。我已经在这个实体上创建了一个过滤器模块,对用户必须输入的validityDate进行搜索。生成的查询应该返回validityDate位于startDate和endDate之间的实体列表。所以我定制了这个查询,这个操作很好。
不幸的是,filter视图显示搜索运算符(<、>、between…)前面的<字段。这与我的情况无关;所以我简单地忽略了查询中的操作符。
我想隐藏运算符在视图中,只有日期与日期选择器。
发布于 2015-04-02 21:06:12
我认为使用当前的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。
https://stackoverflow.com/questions/29418226
复制相似问题