AEM SQL 服务

AEM SQL service

抱歉,如果之前已经回答过这个问题。长话短说,我的任务是找出一种方法来查询 content/pages 以便能够在不同的页面中显示预览。这对我来说不是真正的问题,除非我从未使用过 AEM 并且这里的其他开发人员没有 Web 服务经验。

据我所知,有人提到了 OSGi 以创建 .NET 服务,因此我不确定他们的建议是否对我要实现的目标有些矫枉过正。我能够 运行 CRXDE Lite 中的 SQL 查询(select * 来自 nt:base where ....)并且我可以看到我想要的资源类型值拉。是否可以只创建一个带有查询的 JSP 文件?

简短的回答,是的,可以直接从 jsp 查询,但从开发人员的角度来看,这是一个非常糟糕的主意。

有多种查询存储库的方法,这完全取决于风格和要求。但强烈建议构建一个 java 服务,该服务从您的显示逻辑(又名 JSP's)中抽象出实际的查询实现。这样您就可以在其他地方重用您的代码。如果您仍然执意直接在 JSP 中执行此操作,则可以直接使用 QueryBuilder 服务来构建和执行查询,而不是您自己的服务。可以在 adobe.

上找到一个基本示例

我通过多种方式查询存储库,它们都取决于上下文和复杂性

  • XPath(虽然已弃用 - 它仍然是很多查询中最快的,我相信它不会很快消失)
  • SQL or SQL2(link 用于 jboss 文档,但语法相同)
  • Predicates

上面的项目可以 运行 有多种方式,我个人喜欢查询生成器 api 或 resourceResolver.findResources(字符串查询,字符串语言),具体取决于上下文。

除了 crx/de 之外,还有一个有用的测试查询的工具是 /libs/cq/search/content/querydebug。html