我目前正在使用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看起来很健全。任何帮助将不胜感激。
答案 0 :(得分:0)
请检查以下事项吗?
"<% page import="com.test.utility.jcrUtility"%>"
。您能否确保导入javax.jcr.Node
?您不需要将currentNode分配给变量。您可以直接将currentNode传递给jcrUtility.propertyToArrayList方法。
ArrayList<String> propList = jcrUtility.propertyToArrayList(currentNode);