我正在尝试创建一个安装在吊索中的捆绑包并使用自定义TagLib.我想使用标记文件,而不是使用扩展TagSupport的java类.这样我就可以使用Sling Model来表示JCR和JSP标记文件来表示标记.
这是我的标记文件,它是一个非常基本的锚,没什么特别的,我只是想测试一下:
<%@ tag body-content="scriptless" %>
<%@ tag language="java" pageEncoding="ISO-8859-1"%>
<%@ tag import="org.apache.sling.api.resource.Resource, CallToAction" %>
<%@ attribute name="resource" rtexprvalue="true" required="true" type="org.apache.sling.api.resource.Resource" %>
<%
CallToAction cta = resource.adaptTo(CallToAction.class);
jspContext.setAttribute("cta", cta);
%>
<jsp:doBody var="bodytext">
<c:choose>
<c:when test="${not empty bodytext }">
<c:set var="text" value="${bodytext}" />
</c:when>
<c:when test="${not empty cta.text}">
<c:set var="text" value="${cta.text}" />
</c:when>
</c:choose>
<a class="${cta.css}" href="${cta.href}" title="${cta.title}" >${text}</a>
Run Code Online (Sandbox Code Playgroud)
我创建了一个TLD文件,我在WEB-INF/tags和META-INF/tags文件夹中尝试过(我剥离了xmlns,但该文件有效且有效):
<tlib-version>1.0</tlib-version>
<short-name>test</short-name>
<uri>http://www.example.com/taglibs/test/1.0</uri>
<tag-file>
<description>
Creates an anchor (<a>) HTML element according to the description in
CallToAction
</description>
<name>cta</name>
<path>/WEB-INF/tags/cta.tag</path> …Run Code Online (Sandbox Code Playgroud)