Jsp 访问Adobe CQ 5.6中的EL功能,未拾取TLD

Jsp 访问Adobe CQ 5.6中的EL功能,未拾取TLD,jsp,el,aem,Jsp,El,Aem,任何人都可以为从部署在Adobe CQ 5.6上的JSP中访问EL函数提供指导吗 我的JSP位于一个包中,而EL函数(Java类中的静态方法)和关联的TLD位于一个单独的OSGi包中。两者都安装到Adobe CQ。 捆绑包的POM不会导出相关的Java包: <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifact

任何人都可以为从部署在Adobe CQ 5.6上的JSP中访问EL函数提供指导吗

我的JSP位于一个包中,而EL函数(Java类中的静态方法)和关联的TLD位于一个单独的OSGi包中。两者都安装到Adobe CQ。 捆绑包的POM不会导出相关的Java包:

<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>


TLD,位于同一OSGi包中,
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>

您需要有uri值的完整地址。考虑以下充分发挥作用的例子:

//在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>

org.apache.felix
maven捆绑插件
真的
//包裹。。。。。
*;分辨率:=可选
*;范围=编译|运行时
*测试
META-INF/my-tags.tld=target/classes/META-INF/my-tags.tld
//在tld文件中

我的测试标记库
1
cq通用
http://taglib.cq.mycompany.se/taglibs/my-tags/1.0
剂量
com.my.company.SomeUtils
字符串doSomeThing(java.lang.String)

//在jsp文件中

<%@taglib prefix="mytags" uri="http://taglib.cq.mycompany.se/taglibs/my-tags/1.0"%>
${mytags:doSomeThing(stringValueOfSomething)}

${mytags:doSomeThing(stringValueOfSomething)}
请注意,uri值位于完全限定地址的两个位置: 在tld文件中:

<uri>http://taglib.cq.mycompany.se/taglibs/my-tags/1.0</uri>
http://taglib.cq.mycompany.se/taglibs/my-tags/1.0
在jsp文件中:

<%@taglib prefix="mytags" uri="http://taglib.cq.mycompany.se/taglibs/my-tags/1.0"%>


希望这能解决问题

您需要有uri值的完整地址。考虑以下充分发挥作用的例子:

//在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>

org.apache.felix
maven捆绑插件
真的
//包裹。。。。。
*;分辨率:=可选
*;范围=编译|运行时
*测试
META-INF/my-tags.tld=target/classes/META-INF/my-tags.tld
//在tld文件中

我的测试标记库
1
cq通用
http://taglib.cq.mycompany.se/taglibs/my-tags/1.0
剂量
com.my.company.SomeUtils
字符串doSomeThing(java.lang.String)

//在jsp文件中

<%@taglib prefix="mytags" uri="http://taglib.cq.mycompany.se/taglibs/my-tags/1.0"%>
${mytags:doSomeThing(stringValueOfSomething)}

${mytags:doSomeThing(stringValueOfSomething)}
请注意,uri值位于完全限定地址的两个位置: 在tld文件中:

<uri>http://taglib.cq.mycompany.se/taglibs/my-tags/1.0</uri>
http://taglib.cq.mycompany.se/taglibs/my-tags/1.0
在jsp文件中:

<%@taglib prefix="mytags" uri="http://taglib.cq.mycompany.se/taglibs/my-tags/1.0"%>


希望这将解决问题

如果问题不在于安装包,我认为uri可能需要像这样更具体
如果问题不在于安装包,我认为uri可能需要像这样更具体