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

Popular posts from this blog

java.util.scanner - How to read and add only numbers to array from a text file -

rewrite - Trouble with Wordpress multiple custom querystrings -