Многофункциональное свойство конфигурации AEM OSGi с двумя или более полями

В настоящее время мы можем использовать @Property(unbounded=PropertyUnbounded.ARRAY) создать свойство в OSGi Configuration с несколькими значениями.

Можно ли создать свойство в конфигурации OSGi, которое ведет себя так же, как и в многопользовательских функциях диалогов разработки AEM? При нажатии кнопки "Добавить" поле свойства со всеми его подполями увеличивается. Так что мы можем добавить несколько записей пары ключ / значение.

[
    {
        "path":"/content/demo/page1",
        "date":"20-12-2018",
        "language":"english"
    },
        {
        "path":"/content/demo/page2",
        "date":"23-10-2019",
        "language":"french"
    }
]

Та же пара ключ / значение, которая будет настроена с использованием конфигурации OSGi и извлечена при необходимости.

1 ответ

Консоль Феликса позволяет добавлять многозначные свойства. однако они, как правило, представляют собой одно значение поля. Это означает, что вы не можете создать сложную структуру данных в своем вопросе. Тем не менее, я видел реализации, которые позволили вам ввести заказанный CSV. Например, у вас может быть многозначное свойство String OSGI, где каждое свойство имеет формат:

<path>,<date>,<language>

Ваша первая запись становится:

/content/demo/page1,20-12-2018,english

Или вы можете даже ввести весь JSON как строковое значение, а затем проанализировать его, когда вам это нужно. Но это становится уродливым, чтобы войти очень быстро.

Вы можете использовать вышесказанное с любой сериализуемой структурой данных, но чем сложнее она становится, тем сложнее вводить ее в одном поле ввода.

Другой вариант - создать страницу с компонентом, имеющим многоуровневое пространство, и просто указать в конфигурации OSGI путь к этой странице / компоненту, а затем в службе OSGI найти этот путь и извлечь конфигурацию.

Другие вопросы по тегам