AEM在使用jsp:include时返回编译错误

时间:2016-02-05 05:58:39

标签: adobe aem sling

目前正在使用

 <cq:include script="/apps/components/list-value.jsp" />

但我现在需要包含一个带有param的页面,所以计数器仅限于包含的页面内,我正在考虑使用:

 <jsp:include page="/apps/components/list-value.jsp" >
    <jsp:param name="counter" value="${counter + 1}" />
 </jsp:include> 

但是我一直在收到编译错误&#34; org.apache.sling.api.SlingException:响应处理过程中出现异常&#34;

这是否有等效的cq:函数?

1 个答案:

答案 0 :(得分:0)

可能是因为找不到资源而得到错误,jsp:resource没有准备好从JCR内部获取资源。其他坏消息是,不可能将任意参数传递给cq:include或sling:include(这是你可以使用的其他候选者)。

您有一个选项是设置一个请求属性并在脚本中读取它:

    <%request.setAtributte("counter", anyvalue);%>
    <cq:include script="/apps/components/list-value.jsp" />
    <%request.removeAttribute("counter"); %>  

它非常难看,但如果你想继续使用cq:include或sling:include,这是我知道的唯一方法。

我想到的其他选项是将脚本作为标记文件,然后您可以将参数传递给它。首先在JCR中创建一个标记文件,比如它将存储在'/path/to/the/dir/with/tag/files/list-value.tag'中。然后你可以导入并使用它(注意'/ WEB-INF / tags'前缀,这很重要):

    <%@taglib prefix="t" tagdir="/WEB-INF/tags/path/to/the/dir/with/tag/files" %>
    <t:list-value counter=${counter + 1} />

作为最后一个选项,您可以以不需要将参数传递给脚本的方式重写代码。