Почему мы расширяем класс WCMUsePojo при работе с AEM?
Почему мы расширяем абстрактный класс WCMUsepojo в нашей программе, работая с AEM?
В чем преимущество использования этого класса?
2 ответа
Потому что в механизме разработки компонентов AEM вам, вероятно, нужен способ предоставления серверной логики компонентам.
Это потому что Sightly
(при использовании в качестве языка сценариев рендеринга вместо JSP
страниц) специально представляет собой ограниченный язык шаблонов, который позволяет выполнять только небольшие базовые операции, а тяжелая логика должна выполняться внутри Java
класс или server-side JS
(что вы ссылаетесь, используя data-sly-use
элемент внутри скрипта Sightly).
Это обеспечивает лучшую развязку бизнес-логики, поэтому ваш код будет легче обслуживать, а также будет легче отлаживать.
Чтобы абстрагировать Java-класс компонента с контекстом страницы или связывающими объектами, ранее Adobe WCMUse
или пользовательская реализация класса Use. Если вы работаете с AEM 6.1 или 6.2 WCMUsePojo
класс используется (или даже Sling Models). С выпуском AEM 6.3 и AEM Core WCM Components мы видим, что используя Sling Models
были рекомендованы Adobe как лучшая практика.
Хотя предыдущий ответ дает довольно хорошее объяснение, я напишу свой собственный - краткий:
- Вы можете использовать простой Pojo (не расширяйте класс Adobe) с java-use-api. Но в этом случае вы не сможете легко получить доступ к ресурсам / услугам.
- Вы можете расширить WCMUsePojo, чтобы получить возможность использовать ресурсы / сервисы.
- Кроме того, вы можете пойти с Sling Models способом, который даст вам больше гибкости.