2015-08-03 55 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,它工作。

相關問題