jsp - 在 CQ5.6.1 项目中使用 Sling Taglib 1.3 版

标签 jsp maven aem taglib sling

我一直在读这篇文章http://sling.apache.org/documentation/bundles/sling-scripting-jsp-taglib.html在新的 Sling Taglib 1.3 版上,因为我想开始使用新的 JSTL 函数,如 listChildren,这样我就可以避免在我的组件中使用 Java scriptlet。

当我使用 taglib 声明时

<%@taglib prefix="sling" uri="http://sling.apache.org/taglibs/sling" %> 

在我的组件 JSP 中,当我将组件放入我的 PARSYS 时出现以下错误

org.apache.sling.api.scripting.ScriptEvaluationException:
org.apache.sling.scripting.jsp.jasper.JasperException:
The absolute uri: http://sling.apache.org/taglibs/sling cannot be resolved
in either web.xml or the jar files deployed with this application

在我的 maven pom.xml 文件中我有依赖

<dependency>
    <groupId>org.apache.sling</groupId>
    <artifactId>org.apache.sling.scripting.jsp.taglib</artifactId>
    <version>2.2.0</version>
    <scope>provided</scope>
</dependency>

并且项目正确构建并正确安装。

有谁知道如何配置 CQ 5.6.1 项目以使用带有 URI http://sling.apache.org/taglibs/sling 的 Sling Taglib 版本 1.3 bundle 版本 2.2.0?

最佳答案

CQ 5.6.1 包含版本 2.1.8 中的 org.apache.sling.scripting.jsp.taglib 包(它在版本 1.2 中定义了 taglib)。为了使用新的 taglib,您需要升级包。

如果您将 Maven 依赖项定义为 provided,则意味着它已经安装在目标平台上。在这种情况下,事实并非如此。删除范围或将其更改为 compile 以便将新的 taglib 包包含到 CQ 包中。安装包后,您可以使用所有新功能。

您还可以安装 the bundle手动(通过 Felix 控制台)——那时您将不需要任何 Maven 依赖项。

请注意,在安装新的 taglib 包后,CQ 可能会变得无响应。重新启动实例应该会有所帮助。

关于jsp - 在 CQ5.6.1 项目中使用 Sling Taglib 1.3 版,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22845869/

相关文章:

java - 无法访问或导航 jsp 代码中的图像文件

eclipse - 导入 Maven-GWT 项目时出错 ("No marketplace entries found to handle gwt-maven-plugin")

android - 如何在gradle中添加人工库?

maven - 我如何知道要使用哪个版本的 Maven 插件?

osgi - 在 OSGi 控制台中进行的配置保存在哪里?

html - 使用 BreadcrumbList 获取 SEO 错误

java - 如何在请求后刷新表单?

java - 如何隐藏TOMCAT webapp文件夹中的JSP文件

java - jsp文件上传问题

javascript - AEM 6.3 : Sling Servlet registered with resourceType