2015-04-01 76 views
0

我正在使用CQ5並試圖調用我在cq5代碼的捆綁部分中編寫的自定義java實用程序函數。我從組件jsp調用它。CQ5調用JSP中的自定義實用程序方法

在我的常見包中,我有一個實用程序類src/main/java。我的包是類似com.test.utility和我的文件是jcrUtility.java。裏面java文件我有類似:

public static ArrayList<String> propertyToArrayList(Node n) { ... } 

在我的組件的JSP文件,我有這樣的事情:

<% page import="com.test.utility.jcrUtility"%> 
<% 
    Node n = currentNode; 
    ArrayList<String> propList = jcrUtility.propertyToArrayList(n); 
%> 

在我的兩個Java類和我的JSP文件我有正確的其他庫進口如java.util.ArrayList,javax.jcr.Node等我還編譯了我的OSGI包,並在Bundles Web控制檯中更新它。

我接受了當前的異常情況如下:

org.apache.sling.api.scripting.ScriptEvaluationException: org.apache.sling.scripting.jsp.jasper.JasperException: Unable to compile class for JSP: 
The method propertyToArrayList(Node n) is undefined for the type jcrUtility 

我不知道什麼問題正在考慮我的工具類的Java和JSP我的java查找聲音。任何幫助,將不勝感激。

回答

0

請問您可以檢查下列事項嗎?

  1. 你的包是「活動」和「com.test.utility」包了「導出軟件包」一節中所示。
  2. 您的示例顯示您僅在JSP中導入jcrUtility類。 "<% page import="com.test.utility.jcrUtility"%>"。你能確定你也在導入javax.jcr.Node嗎?
  3. 您不應該需要將currentNode指定給變量。您可以直接將currentNode傳遞給jcrUtility.propertyToArrayList方法。

    ArrayList<String> propList = jcrUtility.propertyToArrayList(currentNode); 
    
+0

我檢查我的包是「** **活動」和我的包是在「**導出軟件包**」。 至於導入的東西,我有javax.jcr.Node導入。是的,我知道我可以通過currentNode作爲一個變量。有什麼建議麼? – RoyValentine 2015-04-02 16:10:24