Почему Слинг игнорирует «адаптируемый» параметр хитрого использования данных HTL? - PullRequest
0 голосов
/ 27 февраля 2019

В 2017 году функциональность была добавлена ​​ к Apache Sling и HTL, чтобы позволить Использовать API с другой способной к адаптации (такой как решатель ресурсов или дочерний ресурс) вместоресурс поддержки или запрос по умолчанию.

Feike Visser предоставил пример , как использовать такие гибкие адаптеры с простым списком:

<div data-sly-list.child="${resource.listChildren}">
   <sly data-sly-use.c="${'com.adobe.examples.htl.core.models.HelloWorldModel' @ adaptable=child}" />
   ${c.resourceType}
</div>

Однако примерне работает (в этом случае используется не AEM Sling 11).В то время как создается экземпляр HelloWorldModel (Sling Model), ресурс поддержки всегда является исходной страницей, а не указанной адаптируемой.Эта часть adaptable=child игнорируется.

Что может помешать работе этой полезной функции?

РЕДАКТИРОВАТЬ: HelloWorldModel основан на Visser * пример :

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

    private static Logger log = LoggerFactory.getLogger(HelloWorldModel.class);

    @OSGiService
    private SlingSettingsService settings;

    @SlingObject
    private ResourceResolver resourceResolver;

    @ValueMapValue(name = "sling:resourceType", injectionStrategy=InjectionStrategy.OPTIONAL) @Default(values="No resourceType")
    private String resourceType;

    private String message;


    @PostConstruct
    public void init() {
        log.info("Reached init of HelloWorldModel");
        message = "\tHello World!\n";
        message += "\tResource type is: " + resourceType + "\n";
        message += "\tUser id is " + resourceResolver.getUserID() + "\n";
    }

    public String getResourceType() {
           return resourceType;
    }

    public String getMessage() {
        log.info("Inside getMessage() method");
        return message;
    }  
}

Выходными данными всегда является тип ресурса ресурса страницы, а не тип ресурса дочерних элементов списка.

РЕДАКТИРОВАТЬ: это может быть потому, что SlingModelsUseProvider использовался ранееJavaUseProvider, означающее, что JavaUseProvider - который обеспечивает гибкую адаптацию - никогда не достигается?

...