2015-04-02 21 views
1

在我的Jspresso應用程序中,我有一個實體startDateendDate。 我在此實體上創建了一個過濾器模塊,並搜索用戶必須鍵入的validityDate。生成的查詢應返回validityDate介於startDateendDate之間的實體列表。 所以我定製了查詢,這很好。在Jspresso中創建包含不帶比較運算符的日期選擇器的過濾器視圖

不幸的是,過濾器視圖顯示validityDate字段由搜索運算符(<>between ...),這是在我的情況無關preceeded;所以我簡單地忽略查詢中的操作符。

我想在視圖中隱藏操作符只有日期選擇器的日期。

+0

歡迎來到SO:SE。也許插入快照(可以添加鏈接)或代碼的相關部分會很有用。見[問]。 – mins 2015-04-02 17:02:39

回答

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的變化。

+0

已經創建了相關的[GitHub問題](https://github.com/jspresso/jspresso-ce/issues/12)。 – 2015-04-09 08:19:25

+0

這個問題已經在當前的Jspresso 4.1-SNAPSHOT – 2015-04-17 07:32:13

相關問題