在cq5中将日期作为类型日期

时间:2013-02-13 08:39:24

标签: cq5

我在我的组件中使用xtype datefield。我想从我的对话框中获取值作为日期而不是字符串。是否有任何方法可以获取除字符串之外的任何其他类型的对话框值?在这里,我需要日期。

4 个答案:

答案 0 :(得分:11)

是。您可以使用ValueMap类的get(java.lang.String name, java.lang.Class<T> type)方法获取值并将其转换为指定的类型。

即。如果您希望属性的值为Date,则可以使用以下语法。

Date date = properties.get("date", Date.class);

如果存储库中不存在该属性,您还可以使用get(java.lang.String name, T defaultValue)方法返回默认值。对于Ex

Date date = properties.get("date", new Date());
Date date = properties.get("text", "default_text");

默认值还用于定义要将值转换为的类型。即,如果默认值为String,则返回String;如果默认值为Date对象,则返回Date对象。

注意: 属性对象是ValueMap的一个实例

答案 1 :(得分:4)

您也可以使用默认值。您提供的默认值必须是您希望返回的类型。

Date date = properties.get("date", new Date());

http://sling.apache.org/apidocs/sling5/org/apache/sling/api/resource/ValueMap.html

答案 2 :(得分:1)

当我们在cq5对话框中使用datefield时,其值将被保存为CRX中的类型'Date'是默认值。在将CRX中的属性值检索到CQ页面时,我们必须明确地将类型转换为java.util.Date对象,如下所述。

java.util.Date date = properties.get("publishDate",java.util.Date.class);

答案 3 :(得分:0)

我将重新回答这个老问题,因为我遇到了同样的问题,并且发现了一个更优雅的解决方案。

如果您在对话框中使用以下配置,您将只获得日期选择字段,但它将在CRX-DE中保存为日期:

xtype="datetime"
hideTime="{Boolean}true"