【问题标题】:get date as type date in cq5在 cq5 中获取日期作为类型日期
【发布时间】:2013-02-13 08:39:24
【问题描述】:

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

【问题讨论】:

    标签: aem


    【解决方案1】:

    是的。您可以使用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 的一个实例

    【讨论】:

    • 我使用了 Date date = properties.get("date", new Date());但是正在打印 Java new Date()。我无法从我的组件中获取“日期”值。谁能帮帮我?
    • 您的财产名称是“日期”还是其他名称?
    • 是的,只有它的名字。我可以得到 textfield xtype 但不能得到 datefield xtype。
    • 你能提供你的日期字段的对话框配置吗?
    • 我在 AEM 6.1 中注意到了这个问题,上面的代码在 5.6.1 之前都可以正常工作。为了快速修复,您可以使用{ "xtype": "datetime", "name": "./date", "hideTime": true},然后上面的代码应该可以正常工作。
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      当我们在 cq5 对话框中使用 datefield 时,它的值默认保存为 CRX 中的“Date”类型。在从 CRX 检索该属性值到 CQ 页面时,我们必须将其显式类型转换为 java.util.Date 对象,如下所述。

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

      【讨论】:

      • 当使用 xtype 日期字段时,它的值在 CRX 中存储为字符串。当使用 xtype datetime 时,它​​存储为 Date。
      【解决方案4】:

      我将重新提出这个老问题,因为我遇到了同样的问题,并且我认为找到了一个更优雅的解决方案。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多