我在我的组件中使用 xtype 日期字段。我想从我的对话框中获取值作为日期而不是字符串。是否有任何方法可以获取字符串以外的任何其他类型的对话框值?因为这里我需要日期。
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
当我们在 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"