为什么我们在使用 AEM 时扩展 WCMUsePojo class?

Why we extends WCMUsePojo class while working with AEM?

为什么我们在使用 AEM 时在我们的程序中扩展 WCMUsepojo 抽象 class?

使用这个class有什么好处?

因为在AEM的组件开发机制中,您可能需要一种方式来为组件提供后端逻辑。

那是因为 Sightly(当用作呈现脚本语言而不是 JSP 页面时)是一种有限的模板语言,它只允许执行一些小的基本操作,而繁重的工作逻辑应该在 Java class 或 server-side JS 内完成(您在 Sightly 脚本中使用 data-sly-use 元素引用)。

这提供了更好的业务逻辑解耦,因此您的代码将更易于维护,也更易于调试。

为了使用页面上下文或绑定对象抽象组件 Java class,之前使用了 Adob​​e 的 WCMUse,或者使用 class 的自定义实现。如果您使用的是 AEM 6.1 或 6.2 WCMUsePojo class(甚至是 Sling 模型)。随着 AEM 6.3 和 AEM 核心 WCM 组件的发布,我们看到使用 Sling Models 已被 Adob​​e 提倡为最佳实践。

虽然之前的答案给出了很好的解释,但我会写一个自己的 - 简短的:

  1. 您可以通过 java-use-api 使用简单的 Pojo(不要扩展任何 Adob​​e 的 class)。但在这种情况下,您将无法轻松访问 resources/services.
  2. 您可以扩展 WCMUsePojo 以获得使用 resources/services 的能力。
  3. 此外,您可以使用 Sling Models 方式,这会给您带来更大的灵活性。