2015-08-03 2 views
3

Мы пытаемся реализовать образец модели стропы в AEM 6.0.Ошибка при использовании метода adaptTo Sling при использовании моделей Sling

Петля модель класса без импорта, как это:

@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" %> 

Первоначально была представлена ​​версия библиотеки тегов библиотеки Apache Sling JSP версии 2.2.0. Мы также попытались загрузить версию 2.2.4, но это не помогло.

Может ли кто-нибудь обратиться за помощью, если что-либо еще требуется для того, чтобы тег adaptTo был доступен?

+0

Декларация taglib верна. Можете ли вы опубликовать полный исходный код JSP? Возможно, вы включаете другие JSP, которые «тень» этого импорта с более старой версией. –

+0

. Согласно [документации] (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, это сработало.

Смежные вопросы