Многофункциональное свойство конфигурации 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 найти этот путь и извлечь конфигурацию.