2016-02-05 48 views
0

目前使用AEM使用JSP時返回編譯錯誤:包括

<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> 

,但我不斷收到編譯錯誤:

「org.apache.sling.api.SlingException響應處理過程中的異常」有相當的CQ:功能呢?

+0

是我的答案以下足以解決您的問題? – brunovianarezende

回答

0

可能是因爲找不到資源而出現錯誤,jsp:resource沒有準備從JCR中獲取資源。其他壞消息是,無法將任意參數傳遞給cq:include或sling:include(這是您可以使用的其他候選人)。你有

一種選擇是設置一個請求屬性和讀取你的腳本里面:

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

它是相當難看,但如果你想繼續使用CQ我知道的唯一途徑:包括或吊索:包括。

剛剛想到的其他選項是將腳本作爲標記文件,然後您可以將參數傳遞給它。首先在JCR中創建一個標籤文件,稱它將存儲在'/path/to/the/dir/with/tag/files/list-value.tag'中。然後,你可以導入和使用(注意「/ WEB-INF /標籤的前綴,這一點很重要):

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

作爲最後的選擇,你可以在你沒有辦法重寫代碼需要將參數傳遞給腳本。

+0

謝謝,我實際上試圖動態呈現報表,並且計數器用於縮進(取決於深度)。如果我有2個標題,每個標題都會以相同的距離縮進。你的回答,removeAttribute,重置縮進,使header2不會有與header1相同的縮進。我會嘗試自定義taglib解決方案,不確定這可以工作,因爲頁面使遞歸「包含」。 – user5733033

+0

嗨,看起來你的用例對於請求attibute hack太複雜了。我認爲標籤文件的想法會更好。標記文件處理遞歸調用,我已經在我的組件中完成了。請回報你的發現。 – brunovianarezende