AEM:如何使用资源类型获取已注册吊索模型的列表

AEM:如何使用资源类型获取已注册吊索模型的列表,aem,sling,sling-models,Aem,Sling,Sling Models,在创建吊索模型时,我们可以通过资源类型注册它。有没有办法通过在AEM中提供资源类型来获得sling模型类名。例如:如果我有一个资源类型/mysite/component/breadcrumb,那么sling模型是BreadCrumbModel.java。 如果我传递resourceType值并获取类referenece,是否存在OOTB服务 通过提供的资源或该资源的SlingHttpServletRequest向您表示感谢 modelFactory.getModelFromResource(re

在创建吊索模型时,我们可以通过资源类型注册它。有没有办法通过在AEM中提供资源类型来获得sling模型类名。例如:如果我有一个资源类型/mysite/component/breadcrumb,那么sling模型是BreadCrumbModel.java。 如果我传递resourceType值并获取类referenece,是否存在OOTB服务


通过提供的
资源
或该资源的
SlingHttpServletRequest
向您表示感谢

modelFactory.getModelFromResource(resource)
modelFactory.getModelFromRequest(request)

用法示例: 如果类中注入了
SlingScriptHelper
-

Resource resource = resourceResolver.getResource("/mysite/component/breadcrumb");
slingScriptHelper.getService(ModelFactory.class).getModelFromResource(resource);

或者,如果您已经注入了
ModelFactory
并可用,请直接使用它。

是,从提供的
资源或该资源的
SlingHttpServletRequest
使用

modelFactory.getModelFromResource(resource)
modelFactory.getModelFromRequest(request)

用法示例: 如果类中注入了
SlingScriptHelper
-

Resource resource = resourceResolver.getResource("/mysite/component/breadcrumb");
slingScriptHelper.getService(ModelFactory.class).getModelFromResource(resource);

或者,如果您已经注入了
ModelFactory
并可用,请直接使用它。

org.apache.sling.models.factory.ModelFactory#createModel(@Nonnull Object adaptive,@Nonnull Class type)
org.apache.sling.models.factory.modelbactory#createModel(@Nonnull Object adaptive,@Nonnull Class type)
谢谢,它起作用了。但一个问题是,一些模型使用资源作为适配器,而有些模型使用请求。在获取资源之前,是否有任何方法可以检查此模型是属于资源还是属于请求?很高兴它能够工作。为了确定模型是否使用请求或资源进行了调整,
exportModelForRequest
isModelAvailableForRequest
来自
ModelFactory
的方法看起来很有希望。虽然我还没有测试过,但您可能想尝试一下这些方法。好奇的是,您是否能够让它工作,检查模型是否使用req或资源进行了调整?哪种方法对你有帮助是的通过这个我可以检查。。。谢谢你,伙计。不幸的是,它没有解决我的问题,因为我的请求是通过一个servlet发出的,因此在该请求中,它没有通过请求调整模型注册。因为此请求资源与实际资源不同。无论如何,感谢您的帮助:)@SubSul
isModelAvailableForRequest
将检查可用于已传递请求中嵌入的资源的模型。因此,我们无法检查组件的吊索模型是否可以根据请求进行调整,除非我们有对特定资源的请求。另外,在最新的sling models API中,我们在
ModelFactory
中有一个名为
getModelFromWrappedRequest
的方法,它用传递的资源包装请求。谢谢,它可以工作。但一个问题是,一些模型使用资源作为适配器,而有些模型使用请求。在获取资源之前,是否有任何方法可以检查此模型是属于资源还是属于请求?很高兴它能够工作。为了确定模型是否使用请求或资源进行了调整,
exportModelForRequest
isModelAvailableForRequest
来自
ModelFactory
的方法看起来很有希望。虽然我还没有测试过,但您可能想尝试一下这些方法。好奇的是,您是否能够让它工作,检查模型是否使用req或资源进行了调整?哪种方法对你有帮助是的通过这个我可以检查。。。谢谢你,伙计。不幸的是,它没有解决我的问题,因为我的请求是通过一个servlet发出的,因此在该请求中,它没有通过请求调整模型注册。因为此请求资源与实际资源不同。无论如何,感谢您的帮助:)@SubSul
isModelAvailableForRequest
将检查可用于已传递请求中嵌入的资源的模型。因此,我们无法检查组件的吊索模型是否可以根据请求进行调整,除非我们有对特定资源的请求。另外,在最新的sling models API中,我们在
ModelFactory
中有一个名为
getModelFromWrappedRequest
的方法,它用传递的资源包装请求。