我是 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})
现在适用于 reuqest
和 resource
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/