1

私の Jspresso アプリケーションには、 と を持つエンティティがstartDateありendDateます。ユーザーが入力する必要がある を検索して、このエンティティにフィルター モジュールを作成しましたvalidityDate。生成されたクエリは、これvalidityDateが ~ の間にあるエンティティのリストを返す必要がstartDateありendDateます。そのため、クエリをカスタマイズしましたが、これはうまく機能します。

残念ながら、フィルター ビューにはvalidityDate検索演算子 ( <, >, between…) が前に付いたフィールドが表示されますが、これは私の場合は関係ありません。そのため、クエリ内の演算子を単に無視します。

ビューでオペレーターを非表示にして、日付ピッカーで日付のみを表示したいと思います。

4

1 に答える 1

0

現在の Jspresso バージョン (現時点では 4.0.7) を使用して簡単に実現できるとは思いません。問題は、比較可能なスカラー プロパティを (comparator, min, max) フィルタリング構造に分解するコードが、依存性注入を使用してオーバーライドするにはネストが深すぎることです。

次の方法:

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 に答える