目前正在使用
<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:函数?
答案 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} />
作为最后一个选项,您可以以不需要将参数传递给脚本的方式重写代码。