コンポーネントでxtypedatefieldを使用しています。文字列ではなく日付としてダイアログから値を取得したいのですが、文字列以外のタイプでダイアログ値を取得する方法はありますか?ここのように私は日付が必要です。
4 に答える
はい。ValueMapget(java.lang.String name, java.lang.Class<T> type)
クラスのメソッドを使用して値を取得し、指定されたタイプに変換できます。
つまり、プロパティの値をDateにする場合は、次の構文を使用できます。
Date date = properties.get("date", Date.class);
get(java.lang.String name, T defaultValue)
プロパティがリポジトリに存在しない場合にデフォルト値を返すメソッドを使用することもできます。例の場合
Date date = properties.get("date", new Date());
Date date = properties.get("text", "default_text");
デフォルト値は、値を変換するタイプを定義するためにも使用されます。つまり、デフォルト値がStringの場合はStringを返し、デフォルト値がDateオブジェクトの場合はDateオブジェクトを返します。
注:プロパティオブジェクトはValueMapのインスタンスです
デフォルト値も使用できます。指定するデフォルト値は、返されると予想されるタイプである必要があります。
Date date = properties.get("date", new Date());
http://sling.apache.org/apidocs/sling5/org/apache/sling/api/resource/ValueMap.html
同じ問題があり、よりエレガントな解決策を見つけたと思うので、この古い質問を復活させます。
フィールドのダイアログで次の構成を使用すると、日付選択フィールドのみが取得されますが、CRX-DE に日付として保存されます。
xtype="datetime"
hideTime="{Boolean}true"