如何在AEM 6.2中的页面和组件之间共享数据?
有没有办法使用相同的数据调用HTL中模型的相同实例? 我想在页面的模型中创建一个对象,比如说一个字符串对象,然后在组件的模型中使用它。 要创建bean或模型实例,我调用如何在AEM 6.2中的页面和组件之间共享数据?,aem,sling-models,Aem,Sling Models,有没有办法使用相同的数据调用HTL中模型的相同实例? 我想在页面的模型中创建一个对象,比如说一个字符串对象,然后在组件的模型中使用它。 要创建bean或模型实例,我调用 <sly data-sly-use.model="myModel"/> 在页面和组件中 问题是,我现在有2个实例,其中包含2组本地数据,这是我不想要的。SlingHttpServletRequest通常提供SlingBindings实例,其中包含对currentPage的引用,我正在使用静态字段WCMBinding
<sly data-sly-use.model="myModel"/>
在页面和组件中
问题是,我现在有2个实例,其中包含2组本地数据,这是我不想要的。SlingHttpServletRequest通常提供SlingBindings实例,其中包含对currentPage的引用,我正在使用静态字段WCMBindings.CURRENT\u PAGE在我的示例中,[依赖项:groupId:com.adobe.cq.sighly,artifactId:cq wcm sighly扩展,版本:1.2.30]
我在示例中使用的可选类是Java8类,它可以用来避免对空引用进行过多检查
final Optional<Page> optional = Optional.ofNullable(request)
.map(req -> (SlingBindings) req.getAttribute(SlingBindings.class.getName()))
.map(b -> (Page) b.get(WCMBindings.CURRENT_PAGE));
在你的吊带模型中,你只需要打电话
@Model(adaptables={ SlingHttpServletRequest.class, })
public class Model {
public Model(@Nonnull final SlingHttpServletRequest request) {
final Page currentPage = getCurrentPageFromRequest(request);
// read properties.
}
Page getCurrentPageFromRequest(@Nonnull final SlingHttpServletRequest request) {
final SlingBindings bindings = (SlingBindings) request.getAttribute(SlingBindings.class.getName())
if (bindings == null) {
return null;
}
return (Page) bindings.get(WCMBindings.CURRENT_PAGE);
}
}
Florian,你的意思是SlingHttpServletRequest吗?附加:我在公共Adobe Repos中找不到cq wcm sightly扩展,版本:1.2.30-因此我认为它不公开提供?是的,我做了-修复了它。cq wcm sightly扩展应该部署在AEM实例上,可能在不同的版本中。
@Model(adaptables={ SlingHttpServletRequest.class, })
public class Model {
public Model(@Nonnull final SlingHttpServletRequest request) {
final Page currentPage = getCurrentPageFromRequest(request);
// read properties.
}
Page getCurrentPageFromRequest(@Nonnull final SlingHttpServletRequest request) {
final SlingBindings bindings = (SlingBindings) request.getAttribute(SlingBindings.class.getName())
if (bindings == null) {
return null;
}
return (Page) bindings.get(WCMBindings.CURRENT_PAGE);
}
}