2015-08-03 57 views
3

我们正在AEM 6.0中尝试一个示例吊带模型实施。在使用Sling模型时使用Sling的adaptTo方法时出现错误

吊索模型类不进口是这样的:

@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: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版的Apache Sling JSP Tag Library包。我们也尝试上传2.2.4版本,但没有帮助。

有人请引导,如果其他东西需要adaptTo标签可用?

+0

taglib声明是正确的。你能发布完整的JSP源代码吗?也许你正在包含其他的JSP,它会用旧版本'导入'这个导入 –

+0

根据[documentation](https://sling.apache.org/documentation/bundles/sling-scripting-jsp-taglib.html), 'adaptTo'标签自版本_1.3_开始提供,所以我不希望这会成为问题。也许你正在用上面建议的其他东西遮蔽命名空间。或者,也许你在'/ var/classes'中缓存了一些令人讨厌的东西。您是否尝试强制AEM重新编译JSP? – toniedzwiedz

回答

2

在尝试帮助同事调试类似问题时遇到了这个问题。起初我能够复制这种行为(AEM 6.1)通过复制Doc page段: <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,它工作。

相关问题