为什么Sling忽略HTL的数据狡猾使用的“自适应”参数?

时间:2019-02-27 13:04:56

标签: sling sightly htl sling-models

在2017年functionality was added中使用Apache Sling和HTL,允许将the Use API与其他可适配对象(例如资源解析器或子资源)一起使用,而不是使用默认的后备资源或请求。 / p>

Feike Visser提供了一个带有简单列表的how to use such flexible adapters示例:

<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模型)时,后备资源始终是原始页面,而不是指定的自适应页面。就像adaptable=child部分被忽略一样。

是什么导致该有用功能无法正常工作?

编辑:HelloWorldModel基于Visser的example

@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;
    }  
}

输出始终是页面资源的资源类型,而不是列表子级的资源类型。

编辑:这可能是因为SlingModelsUseProviderJavaUseProvider之前插入了,从而导致无法提供提供灵活适应性的代码吗?

0 个答案:

没有答案