jsp - Access EL function in Adobe CQ 5.6, TLD not picked up -
can give guidance accessing el function within jsp deployed on adobe cq 5.6?
my jsp sits in package, while have el function (static method in java class) , associated tld located in separate osgi bundle. both installed adobe cq. pom bundle export relevant java package:
<plugin> <groupid>org.apache.felix</groupid> <artifactid>maven-bundle-plugin</artifactid> <extensions>true</extensions> <configuration> <instructions> <bundle-name>aib ui bundle</bundle-name> <export-package> mypackage.* </export-package> <include-resource> {maven-resources} </include-resource> <embed-dependency>joda-convert;scope=compile|runtime,joda-time;scope=compile|runtime,</embed-dependency> <bundle-resource>/meta-inf/tags</bundle-resource> <sling-bundle-resource>/meta-inf/tags</sling-bundle-resource> </instructions> </configuration> </plugin>
however, when jsp processed, call el function fails.
the error reads: file "/apps/aib/mortgage/components/page/main/utilityfunction" not found
my code below. gratefully received.
regards, ken.
el function class, located in osgi bundle, src/main/java/mypackage/utilityfunction.java
:
package mypackage;
public class utilityfunction { private utilityfunction() { ... } public static string displaybuildnumber() { // processing } }
tld, located in same osgi bundle,
src/main/resources/meta-inf/utilityexpressionlanguagefunctions.tld
<?xml version="1.0" encodeing="iso-8859-1" ?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <tlib-version>1.0</tlib-version> <uri>utilityfunction</uri> <function> <name>displaybuildnumber</name> <function-class>mypackage.utilityfunction</function-class> <function-signature>string displaybuildnumber()</function-signature> </function> </taglib>
jsp, located @
/apps/myproj/components/page/main/head.jsp
: <%@include file="/libs/foundation/global.jsp"%><% %><%@page session="false" %> <%@taglib prefix="cq" uri="http://www.day.com/taglibs/cq/1.0" %> <%@taglib prefix="utils" uri="utilityfunction" %> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta http-equiv="keywords" content="<%=properties.get("p_metakeywords","") %>" /> <meta name="description" content="<%=properties.get("p_metadescription","") %>" /> <meta http-equiv="x-ua-compatible" content="ie=8" /> <title>my application ${utils:displaybuildnumber()}</title> <cq:include script="/libs/wcm/core/components/init/init.jsp"/> <cq:include script="/libs/wcm/core/browsermap/browsermap.jsp" /> <cq:includeclientlib css="jquery-ui" /> <cq:includeclientlib js="cq.jquery, cq.foundation-main, cq.shared, forms-overlay, jquery-ui,cq.jquery.ui" /> </head> <cq:defineobjects />
you need have complete address uri value. consider following functioning example:
//in pom.xml
<plugin> <groupid>org.apache.felix</groupid> <artifactid>maven-bundle-plugin</artifactid> <extensions>true</extensions> <configuration> <instructions> <export-package> //packages..... </export-package> <import-package> *;resolution:=optional </import-package> <embed-dependency>*;scope=compile|runtime</embed-dependency> <sling-test-regexp>.*test</sling-test-regexp> <include-resource> meta-inf/my-tags.tld=target/classes/meta-inf/my-tags.tld </include-resource> </instructions> </configuration> </plugin>
//in tld file
<description>my test taglib</description> <tlib-version>1.0</tlib-version> <short-name>cq-common</short-name> <uri>http://taglib.cq.mycompany.se/taglibs/my-tags/1.0</uri> <function> <name>dosomething</name> <function-class>com.my.company.someutils</function-class> <function-signature>string dosomething(java.lang.string)</function-signature> </function>
//in jsp file
<%@taglib prefix="mytags" uri="http://taglib.cq.mycompany.se/taglibs/my-tags/1.0"%> ${mytags:dosomething(stringvalueofsomething)}
notice uri value located qualified address @ 2 places: in tld file:
<uri>http://taglib.cq.mycompany.se/taglibs/my-tags/1.0</uri>
and in jsp file:
<%@taglib prefix="mytags" uri="http://taglib.cq.mycompany.se/taglibs/my-tags/1.0"%>
hope solve problem
Comments
Post a Comment