【发布时间】:2013-02-13 08:39:24
【问题描述】:
我在我的组件中使用 xtype 日期字段。我想从我的对话框中获取值作为日期而不是字符串。是否有任何方法可以获取除字符串以外的任何其他类型的对话框值?因为这里我需要日期。
【问题讨论】:
标签: aem
我在我的组件中使用 xtype 日期字段。我想从我的对话框中获取值作为日期而不是字符串。是否有任何方法可以获取除字符串以外的任何其他类型的对话框值?因为这里我需要日期。
【问题讨论】:
标签: aem
是的。您可以使用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) 方法返回一个默认值,以防存储库中不存在该属性。防爆
Date date = properties.get("date", new Date());
Date date = properties.get("text", "default_text");
默认值也用于定义将值转换为的类型。即,如果默认值为 String,它将返回一个 String,如果默认值为 Date 对象,它将返回一个 Date 对象。
注意:properties 对象是 ValueMap 的一个实例
【讨论】:
{ "xtype": "datetime", "name": "./date", "hideTime": true},然后上面的代码应该可以正常工作。
您也可以使用默认值。您提供的默认值必须是您希望返回的类型。
Date date = properties.get("date", new Date());
http://sling.apache.org/apidocs/sling5/org/apache/sling/api/resource/ValueMap.html
【讨论】:
当我们在 cq5 对话框中使用 datefield 时,它的值默认保存为 CRX 中的“Date”类型。在从 CRX 检索该属性值到 CQ 页面时,我们必须将其显式类型转换为 java.util.Date 对象,如下所述。
java.util.Date date = properties.get("publishDate",java.util.Date.class);
【讨论】:
我将重新提出这个老问题,因为我遇到了同样的问题,并且我认为找到了一个更优雅的解决方案。
如果您在对话框中为您的字段使用以下配置,您将只会获得一个日期选择字段,但它将在 CRX-DE 中另存为日期:
xtype="datetime"
hideTime="{Boolean}true"
【讨论】: