3

在 Adob​​e AEM(前 CQ5)中,能够添加一些自定义 html 以从组件中分离出来的最佳方法是什么?

假设我有一个页面,我可以将我的组件放置在任何可用的 parsys 中(因此可能有多个实例,但我不知道确切的路径)。我希望这个组件根据它的内容(除了它的标准渲染)向部件添加一些数据。问题是组件的代码是在 JSP 渲染之后执行的,所以我不能通过请求属性传递数据来渲染。

4

2 回答 2

2

把这一切都加了盐,疯狂的猜测如下:

我不是 100% 确定这一点,但我总是假设组件脚本按照它们包含在页面中的顺序执行,这意味着当组件渲染脚本被执行时,页面已经被渲染,使您所描述的成为不可能。

如果你真的需要这个,应该可以(至少在理论上)编写一些在 head 或 headlibs.jsp 中执行的代码,并构建页面中所有组件的列表(基本上只是递归地遍历 jcr:content 节点树为页面构建您找到的资源类型的列表),然后基于该列表包括一组客户端库类别,也许通过使它们成为组件的隐藏属性......或其他东西。

于 2013-05-15T08:16:38.610 回答
0

我们创建了“上游”组件或包含其他组件的包装器组件。

在上游情况下,他们可以向请求对象添加属性(或使用 cookie 或...)

在“包装”情况下(组合模式),组件的其他组件。我们通过将字符串或对象添加到内部组件将查找的请求属性来将数据传递到包含的组件。包含后,包装器组件将删除它添加的属性(因此它不会意外污染设置)。然后“内部组件”负责查找请求对象的特定属性。

<%!
public String getPassedData(HttpServletRequest req, String attrName) {
    final Object passed = (req.getAttribute(attrName)==null) ? "" : req.getAttribute(attrName);
    if ( override.equals("") )
        return passed.toString();
    }
%>
于 2013-05-22T20:26:52.423 回答