Sling Servlet 中的 CQ5 QueryBuilder 参考

2024-01-14

我像这样声明一个 sling servlet

@Component(metatype = false)
@Service(Servlet.class)
@Properties({
        @Property(name = "sling.servlet.paths", value = "/bin/foo/bar"),
        @Property(name = "sling.servlet.methods", value = "POST") })
public class FooBarServlet extends SlingAllMethodsServlet {
    ...
}

我像这样重写 doPost

@Override
    protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException {
    ...
}

我可以从客户那里发帖。伟大的!

我输入以下内容

@Reference
private QueryBuilder queryBuilder;

根据文档,应注入对查询构建器的引用。但似乎并非如此。在日志中我看到这个错误

bindQueryBuilder cannot be found (java.lang.VerifyError: ...

当我尝试发布到 servlet 时,我得到了这个

javax.jcr.RepositoryException: org.apache.sling.api.resource.PersistenceException: Resource at '/bin/foo/bar' is not modifiable.

在 OSGi 控制台中,我看到我的包已安装,这就是它对我的 servlet 的说明

Service ID 3075 Types: javax.servlet.Servlet
Service PID: com.myproject.FooBarServlet
Component Name: com.myproject.FooBarServlet
Component ID: 5526
Vendor: Adobe

关于我做错了什么有什么建议吗?


我一直在使用this http://helpx.adobe.com/experience-manager/using/using-query-builder-api1.html教程作为参考。 我碰到this http://felix.apache.org/documentation/subprojects/apache-felix-service-component-runtime.html关于 Felix 服务组件运行时 (SCR)

所以我实施了以下

protected void activate(ComponentContext context) {
    LOGGER.info("activating {}", this.getClass().getName());
}

protected void unbindQueryBuilder(QueryBuilder queryBuilder) {
    this.queryBuilder = null;
}

protected void bindQueryBuilder(QueryBuilder queryBuilder) {
    this.queryBuilder = queryBuilder;
}

成功了!因此,经过仔细调查,我了解到这些绑定/取消绑定方法实际上应该是由 maven-scr-plugin 生成的,我的版本是 1.6.0

            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-scr-plugin</artifactId>
                <version>1.6.0</version>
                <executions>
                    <execution>
                        <id>generate-scr-scrdescriptor</id>
                        <goals>
                            <goal>scr</goal>
                        </goals>
                        <configuration>
                            <!-- Private service properties for all services. -->
                            <properties>
                                <service.vendor>Adobe</service.vendor>
                            </properties>
                        </configuration>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-simple</artifactId>
                        <version>1.5.2</version>
                    </dependency>
                </dependencies>
            </plugin>

对于注释我有 1.4.0

            <dependency>
                <groupId>org.apache.felix</groupId>
                <artifactId>org.apache.felix.scr.annotations</artifactId>
                <version>1.4.0</version>
                <scope>provided</scope>
            </dependency>

所以虽然我不确定为什么没有生成绑定/取消绑定方法,但我知道它们应该是,所以我手动生成它们。

Update我尝试将 maven-scr-plugin 更新到版本 1.20.0,这在 mvn build 期间产生了以下错误

[ERROR] Project depends on org.apache.felix:org.apache.felix.scr.annotations:jar:1.4.0:provided
[ERROR] Minimum required version is 1.9.0

所以...我将 org.apache.felix.scr.annotations 更新到 1.9.0。它有效!我的绑定/取消绑定访问器已生成,一切都很好。但是,我很担心,不知道是否应该使用 org.apache.felix.scr.annotations 的 1.9.0 版本,因为我将其标记为provided在 Maven 依赖项中,当我查看 cq 实例上安装的 OSGi 包时,我看到以下内容

Apache Felix Declarative Services (org.apache.felix.scr) : Version 1.6.3.R1409029
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sling Servlet 中的 CQ5 QueryBuilder 参考 的相关文章

  • 从 WSL 2 内部访问在 Windows 中运行的本地主机 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我正在运行本地AEM服务器 in my Windows机 服务器正在运行本地主机 4502 我正在使用运行的 Ubuntu 发行版WSL 2为了我的发展 我想访问本地主机 4502在
  • 为什么我们在使用 AEM 时扩展 WCMUsePojo 类?

    为什么我们在使用 AEM 时在程序中扩展 WCMUsepojo 抽象类 使用这个类有什么好处 因为在 AEM 的组件开发机制中 您可能需要一种方法来为组件提供后端逻辑 那是因为Sightly 当用作渲染脚本语言而不是JSP页 是一种有限的模
  • 将 CQ5 组件设置为可编辑或不可编辑

    如果我想设置 cq5 组件在页面 A 中可编辑 但在页面 B 中不可编辑 是否可以 例如 在页面 A 我有 C 组件 我们允许作者打开对话框并编辑组件 但我们不允许作者打开对话框来编辑页面 B 上的组件 C 我尝试研究 cq EditCon
  • 如何在 AEM 6.1 中创建系统用户 (rep:SystemUser)?

    在 AEM 6 1 上 我尝试创建一个系统用户 rep SystemUser 谁能帮我 我需要这个系统用户映射到 OSGI 中的一个服务 我想用它来将一些数据写入 aem 内容 我可以在 CRX 中的以下位置看到 系统用户 home use
  • CQ5 中的 标签被替换为 标签

    我在用着富文本编辑器 with 杂项工具插件来编辑我的网站中的文本 但是当我打开 HTML 编辑器并创建这样的东西时 p strong Strong text strong p CQ立即将其重写为 p b Strong text b p 是
  • 获取 .model.json 作为字符串

    我想知道是否有一种简单的方法可以通过 AEM 中的 sling 内容导出器的结果获取字符串 在我当前的用例中 我需要组件的 htl 文件中的组件 model json 输出的内容 并且发送额外的请求显然不是一个好主意 关于如何获取数据有任何
  • 如何在 Touch UI 中添加强制下拉字段

    我将 必需 添加为 真实 但它不起作用 required 为 true 仅适用于文本字段 根据下面的文档 我没有看到任何从下拉列表中添加必填字段的选项 http docs adobe com docs en aem 6 0 author a
  • 我应该在关闭资源解析器之前关闭会话吗

    我有简单的服务 让我们使用 resourcesResolver 和 session 来实现一些逻辑 Component immediate true Service value ServiceInterface class public c
  • AEM 如何解析 JSON 扩展?

    在 CQ 中 如果我请求诸如localhost 4502 content geometrixx en json 我会获取 JSON 格式的节点信息 这同样适用于 XML 扩展 我的问题是 如果URL扩展名是 那么节点信息以JSON格式呈现是
  • jsp PageContext 对象的生命周期是怎样的 - 它是线程安全的吗?

    jsp PageContext 对象是作为 http 请求 响应周期的一部分创建和销毁的 还是在请求之间缓存和重用 PageContext 具有建议在请求之间重用的生命周期方法 即初始化 释放 如果重用它们 可能会造成严重的并发问题 如果两
  • 在 cq5/AEM 中创建自定义 MIME 类型

    我需要在 cq5 AEM 中添加对专有 3D 格式的支持 尽管完全没有这方面的经验 我还是设法生成了一些工作组件来可视化资产 但现在 我需要创建自定义媒体处理程序以从模型生成再现和缩略图 问题是 媒体处理程序只能处理特定 MIME 类型的资
  • 在页面激活上启动工作流程,而无需激活 CQ5 中的页面

    每当内容作者在页面上单击 激活 时 我都需要调用工作流程 然后 工作流将向管理员发送通知 然后管理员继续激活该页面 让我更详细地解释一下 这有 2 部分 i 每当内容作者完成页面修改后 他就会继续单击 激活页面 来自 sidekick 或站
  • 使用细粒度锁的代码示例(JCR Jackrabbit?)

    我正在进行一项学术研究 试图开发一种编程工具 帮助实现细粒度锁定功能 用于维护树状数据结构的并发程序 例如 程序员可能会编写一些接收树根节点并修改树的函数 通过遍历某些路径并添加 删除节点 该工具将帮助他找到代码中节点应该被锁定的位置 以及
  • javax.jcr.nodetype.ConstraintViolationException:没有匹配的属性定义:PROPERTY

    当我尝试为 JCR 节点设置属性时 出现错误 javax jcr nodetype ConstraintViolationException 没有匹配的属性定义 PROPERTY 我是 cq5 的新手 请问有人可以帮我解决这个错误吗 在jc
  • Adobe CQ/AEM - 触发编辑后处理程序

    当我在组件编辑器对话框中选择 确定 时 组件会重新绘制自身 假设我已经设置了 cq editConfig xml
  • 是否可以将变量放入 sling servlet 内的资源路径中?

    我们正在尝试为外部端点提供一个干净的 URI 结构 以从 CQ5 中提取 json 信息 例如 如果您想获取有关特定用户历史记录的信息 假设您拥有权限等 理想情况下我们希望端点能够执行以下操作 bin api user abc123 pho
  • 我们如何在 CQ5 中定义全局属性

    我的要求是拥有一个具有可创作属性的全局页眉和页脚 因此 如果我们更新一页上的属性 它应该会反映在所有页面上 在 CQ5 中实现这一目标的最佳方法是什么 ACS AEM Commons 现在支持此功能 无需使用 iparsys 共享组件属性
  • 添加超过 8 个项目时,AEM ACS Commons 通用列表编辑器会中断

    ACS 共享版本 5 0 6AEM 版本 6 5 8 0 我试图通过单击缩略图 然后单击顶部操作栏中的 属性 来编辑 http localhost 4502 generic lists html etc acs commons lists
  • Maven 无法找到 AEM 原型

    我已经开始解决这个问题很长时间了 我正在处理 Adob e wknd 项目 但我无法通过这个命令 并且大部分工作都是基于它构建的 mvn archetype generate DarchetypeGroupId com adobe gran
  • 将 JSP 包含到 sling servlet 中

    我目前正在开发一个小项目 试图帮助某人弄清楚如何连接组件 理想情况下我们想做两件事 有一个呈现模板的 jsp 我们所有的业务登录都在 SlingAllMethodServlet 中 servlet 定义要点 package definiti

随机推荐

  • 忽略第一维的二维 JavaScript 数组问题

    简而言之 我根据当前月份和日期填充一个数组 我不会在这里复制代码来获取当前月份和日期 因为它工作正常 它适当地返回变量 月 和 日 我的数组列表包含一年中每一天的项目 该数组以 开始 new var content 然后数组是这样列出的 删
  • 即使代码未编译,GroovyClassLoader 对 parseClass 的调用也会成功

    我试图将 Groovy 脚本作为类动态加载 但即使脚本的代码未编译 也会创建类对象 例如 我加载 Groovy 脚本的 Groovy 代码的简化版本如下 GroovyCodeSource src new GroovyCodeSource b
  • Grails clean 不起作用

    我正在使用 Grails 2 0 1 当尝试运行应用程序时 我发现 NoClassDefFoundError 错误 2012 10 16 15 24 25 301 http bio 8080 exec 9 错误错误 GrailsExcept
  • 无法将 LINQ to SQL 类添加到 VS2010 中的项目

    我刚刚在 Visual Studio 2010 RC 中遇到了一些以前没有发生过的事情 比如昨天 这里没有软件变化 但我昨天在编译时确实遇到了一些麻烦 需要重新启动 我无法通过添加对话框将 LINQ to SQL 类添加到任何项目 我创建了
  • 如何减少 x 轴上两个离散值之间的间距?

    首先 我想在没有 ggplot 的情况下完成此操作 我有一个箱线图脚本 data lt data frame u c 0 522 0 488 0 474 0 443 0 510 0 443 0 420 0 554 0 333 0 414 0
  • 无需 DNS 的通用本地网络名称解析方法?

    我正在为启用 DHCP 的网络设备编写 TCP IP 代码 该设备是否有一种通用的方式可以在野外宣布其主机名 几乎所有网络浏览器 在 osx linux win 上 都可以通过名称访问它 例如 http mydevice index htm
  • PHP 下载 excel 文件损坏

    我有一个 Excel 文件 我希望用户能够从我的服务器下载该文件 我在这里查看了很多问题 但我找不到正确下载文件而不会损坏的方法 我假设它是标题 但我还没有将它们组合起来 这就是我现在所拥有的 在我收到的损坏文件中 我可以看到我想要的电子表
  • 在 JOptionPane 上设置 DocumentFilter

    我在用着 String s JOptionPane showInputDialog 从用户那里得到对问题的答复 该对话框设置为显示响应的文本字段 我想将响应中允许的字符限制为仅字母数字和 是否可以在文本字段上安装 DocumentFilte
  • javascript 文件附加非法字符

    我认为我的 apache 网络服务器有问题 我无法参考jquery js 我收到以下错误 带镀铬 Uncaught SyntaxError Unexpected token ILLEGAL 使用火狐浏览器 Error illegal cha
  • docker重启时数据库丢失

    我在 Windows 10 的 Docker 上运行 influxdb 和 grafana 每次关闭 Docker 时 我都会丢失数据库 这是我所知道的 我尝试过调整保留策略 但对 结果 我可以关闭并重新启动容器 docker compos
  • Spotfire 交叉表中的总计问题

    当我使用FIRST CG1 在 单元格值 中 总计不是求和而是显示结果中的值之一FIRST CG1 请告知我们是否必须始终使用sum XXX 得到总计 简短的回答 是的 如果你想要的话Grand Total是您的数据的总和 将总计应用于不同
  • 如何在 Perl 中压缩多个文件?

    如何 tar 多个目录并附加具有某种模式 如 txt 的文件 并排除某些目录并将某些模式 如 exe 全部排除到单个 tar 文件中 要点是目录数量未知 动态 所以我猜我需要循环遍历 I d use 存档 焦油 http search cp
  • 如何在 Grails 中的控制器中声明 inList 约束?

    谁能告诉我如何声明inListGrails 控制器中的约束 假设我有这门课 class A List hello 我怎样才能添加inList的约束条件为hello List从控制器内部 定义一个约束 其中List属性是否具有针对列表列表进行
  • d3.js 家庭树配偶亮点

    代码链接 http jsfiddle net mj58659094 yKUsQ http jsfiddle net mj58659094 yKUsQ 当单击一个人 节点 时 它也会选择配偶 我只想选择 突出显示 我点击的人 丈夫或妻子或孩子
  • 将 SQL 源文件与 bigquery cli 结合使用

    是否可以在 bigquery CLI 中使用输入文件 bq query lt my query sql 如果您使用的是 unix 或者在 windows 上安装了 cygwin 则可以使用 xargs xargs a my query sq
  • Delphi HelpInsight 以及实施中的总结

    我正在寻找有关带有摘要标签的 Help Insight 的解决方案 帮助 我正在使用 Delphi Tokyo 10 2 Update 2 1 HelpInsight 可以工作并且该函数确实有附加信息 interface type TMyC
  • setTimeout 在 forEach 中不起作用

    我有一个调用函数的 forEach 每次调用之间需要有一个延迟 我已将其放在 forEach 内的 setTimeout 内 它不尊重第一次等待后的超时 相反 它等待一次 然后立即运行 我已将超时设置为 5 秒 并使用控制台进行确认 等待
  • 使用哈希字典的词形还原函数不适用于 R 中的 tm 包

    我想使用大型外部词典 格式如下面的 txt 变量所示 对波兰语文本进行词形还原 我并不幸运 无法使用流行的文本挖掘包来选择波兰语 答案https stackoverflow com a 45790325 3480717 https stac
  • 使用代码接收在动态选择中选择一个选项?

  • Sling Servlet 中的 CQ5 QueryBuilder 参考

    我像这样声明一个 sling servlet Component metatype false Service Servlet class Properties Property name sling servlet paths value
Powered by Hwhale