使用Sling模型时使用adapTo Sling方法时出错

时间:2015-08-03 10:45:31

标签: cq5 aem sling sling-models

我们正在AEM 6.0中尝试一个样本吊索模型实现。

没有导入的吊索模型类是这样的:

@Model(adaptables = Resource.class)
public class Header {   

    @Inject
    private String link;
    @Inject
    private String text;

    public String getLink() {
    return link;
    }
    public String getText() {
    return text;
    }

}

使用以下代码行

在jsp中调用sling模型
<sling:adaptTo adaptable="${resource}" adaptTo="com.mysite.models.Header" var="model"/>
<h2>${model.link}</h2>
<h2>${model.text}</h2> 

但是我们收到以下错误:

No tag "adaptTo" defined in tag library imported with prefix "sling"

我们使用以下语句导入了taglib:

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

最初,存在2.2.0版本的Apache Sling JSP Tag Library软件包。我们也试过上传2.2.4版本,但它没有帮助。

如果adapTo标签可用,还有其他人可以指导吗?

1 个答案:

答案 0 :(得分:3)

在试图帮助同事调试类似问题时偶然发现了这一点。起初,我可以通过复制Doc page中的段来复制此行为(AEM 6.1): <sling:adaptTo adaptable="${resource}" adaptTo="org.apache.sling.api.resource.ValueMap" var="myProps" />

我在本地发现的是我们的自定义global.jsp文件在/libs/foundation/global.jsp引用了旧的预花岗岩版本。在该文件中,我看到它有<%@taglib prefix="sling" uri="http://sling.apache.org/taglibs/sling/1.0" %>。作为快速测试,我在最后删除了/1.0并刷新了页面和BAM,它起作用。