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