aem - 吊带模型 : Can I inject the SlingHttpServletRequest when adapting from Resource?

标签 aem sling-models

我是 SlingModels 的新手,注释还不是很清楚。我目前正在尝试将一些基本基础组件从 AEM 6.2 转换为使用 SlingModels。

对于图像组件,基础 JSP 使用 SlingHttpServletRequest 来设置 ImageDoctype。所以我尝试了以下方法:

@Model(adaptables = {Resource.class})
public class ImageModel {
    @SlingObject
    private SlingHttpServletRequest request;

    @SlingObject
    private Resource resource;
}

但是这样请求为空。所以我改用:

@Model(adaptables = {SlingHttpServletRequest.class})

现在适用于 reuqestresource

JSP代码:

<sling:adaptTo adaptable="${slingRequest}" adaptTo="models.ImageModel" var="m"/>

这是正确的方法吗?还是有办法从资源进行调整,并且仍然能够注入(inject)请求

最佳答案

您不能这样做,因为资源无法识别 SlingHttpServletRequest。如果您的模型中需要 Request,请使其适应 Request。

有一些库允许这样做。它使用 Filter 将当前请求存储在 ThreadLocal 中,然后从中读取它,但我不推荐这种方法。 ThreadLocal 只是另一个全局。

关于aem - 吊带模型 : Can I inject the SlingHttpServletRequest when adapting from Resource?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40908830/

相关文章:

aem - 如何实例化具有多个适应性的 Sling 模型

java - 如何为 Sling Resource 实现自定义 AdapterFactory?

java - 无法使用 AEM 中的任何系统用户为捆绑派生用户名

java - 进行 Junit 测试时,如何在 AEM Sling 模型中的节点对象中 setProperty()?

aem - 如何在 aem6 的 sling 模型中适配子节点

aem - 使用 Sling 模型时使用 Sling 的 AdaptTo 方法时出现错误

java - 关于如何在 SlingModel 上创建变更观察程序以实现 JCR 持久化的建议

java - 为什么 "paragraph reference component"显示空图 block (Geometrixx 示例)?

java - 获取 AEM Adaptive Form 中的文件附件路径以在 JSP 中使用来发送带附件的电子邮件?

java - 如何在aem6.2中以编程方式创建具有ACL权限的用户和组?