【问题标题】:Adobe CQ5 - Populating drop down from external DBAdobe CQ5 - 从外部数据库填充下拉列表
【发布时间】:2013-09-12 06:51:08
【问题描述】:

我需要创建一个自定义小部件,该小部件将具有下拉菜单和少量文本字段。 .下拉列表应填充从外部数据库检索到的数据。

我已经用谷歌搜索了它,但如果有人做过任何此类事情,但没有找到解决方案,请告诉我。

【问题讨论】:

    标签: java html oracle adobe aem


    【解决方案1】:

    有几种方法可以解决这个问题。首先要考虑的是您的数据在 db 中更改的频率,以及 db 和 cq5 服务器之间的延迟。

    如果数据不经常变化,只需要手动更新,或者定期更新,你可以考虑从数据库中提取信息,然后将其转换为JCR中的结构。从那里,您可以在 Sling 中使用开箱即用的 json 转换器,方法是点击带有 .json 扩展名的节点 url。 IE。与您将内容节点视为 json localhost:4502/content/geometrixx/en.infinity.json 的方式相同

    假设这是一个作者实例,你应该考虑将下拉结构放在 /apps 目录中,如果你想在它被激活时将其隐藏起来,以防它被激活。

    如果您要公开显示下拉列表,则将其放置在结构中的 /content 目录中是一个好地方,或者如果您认为它是更符合应用程序代码行的内容,则放置在/etc 公开可用的目录。

    如果您希望每次都调用数据库以获取下拉信息,则第二个选项是创建一个自定义 sling servlet(请参阅http://www.therealcq.blogspot.com.au/2013/01/how-to-write-custom-slingservlet.html 以获得基本了解)。

    在那里,建立与数据库的连接,进行相关的 SQL 调用,将其转换为 JSON 并将其作为端点返回。如果您强制它具有 .json 扩展名,请确保您的调度程序没有不恰当地缓存答案,就像您选择了此选项一样,下拉列表中的数据将是上下文相关的或快速移动的。

    如果您需要详细说明这些解决方案,请告诉我。

    【讨论】:

      【解决方案2】:

      我认为您的小部件应该是compositeField。您可以在 Example 1: Custom Multifield Widget

      中的 http://dev.day.com/docs/en/cq/current/developing/widgets.html 找到一些有用的东西

      我认为它非常适合您的需要。

      【讨论】:

        【解决方案3】:

        您似乎要求动态填充下拉菜单。这需要 2 个部分。

        来自http://dev.day.com/docs/en/cq/current/developing/widgets.html#Dynamic+Dialogs

        Selection widget 在下拉对话框中。同一个节点需要一个“选项”属性,即服务的 url。

        该服务应提供 JSON 数据用于显示与价值。

        <items jcr:primaryType="cq:WidgetCollection">
            <myDropDown
                jcr:primaryType="cq:Widget"
                name="./myDropDown"
                fieldLabel="Dyanmic values from DB:"
                type="select"
                xtype="selection"
                options="${serviceURL}.json"
            />
        </items>
        

        响应 ${serviceURL} 的 servlet 需要返回一个 JSON 文本数组,值对(显然是根据您的数据库查询构建的)。例如:

        [
            {value: "first val", text: "Display in Dialog"},
            ...
            {value: "last val", text: "Display Text"}
        ]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-12-25
          • 2011-11-09
          • 2018-10-03
          • 2016-01-09
          • 1970-01-01
          相关资源
          最近更新 更多