CQ5在JSP中调用自定义实用程序方法

时间:2015-04-01 18:45:14

标签: java jsp adobe cq5 aem

我目前正在使用CQ5并尝试调用我在cq5代码的bundle部分中编写的自定义java实用程序函数。我从组件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看起来很健全。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

请检查以下事项吗?

  1. 您的捆绑包是&#34; 有效&#34;和&#34; com.test.utility&#34;包裹显示在&#34; 导出包&#34;部分。
  2. 您的示例显示您只在JSP中导入jcrUtility类。 "<% page import="com.test.utility.jcrUtility"%>"。您能否确保导入javax.jcr.Node
  3. 您不需要将currentNode分配给变量。您可以直接将currentNode传递给jcrUtility.propertyToArrayList方法。

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