JSP Tag Files in subdirectories, using a single taglib prefix. Is that possible?

前端 未结 3 1281
南方客
南方客 2021-02-20 00:04

I currently have my .tag files declared with:

<%@taglib prefix=\"t\" tagdir=\"/WEB-INF/tags\" %>

Example of the path of a tag file :

相关标签:
3条回答
  • 2021-02-20 00:29

    A pattern that I follow, even though doesn't address the OP's problem directly, I find it makes the whole situation a lot less painful, which is creating a JSP Fragment where I define all taglibs:

    /WEB-INF/views/taglibs.jspf

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
    
    <%@ taglib prefix="layout" tagdir="/WEB-INF/tags/layout" %>
    <%@ taglib prefix="t_users" tagdir="/WEB-INF/tags/users" %>
    <%@ taglib prefix="t_widgetsA" tagdir="/WEB-INF/tags/widgetsA" %>
    <%@ taglib prefix="t_widgetsB" tagdir="/WEB-INF/tags/widgetsB" %>
    

    And then include this JSP Fragment at the top of every JSP file:

    /WEB-INF/views/users/employeeProfile.jsp

    <%@ include file="/WEB-INF/views/taglibs.jspf" %>
    
    <layout:main>
        <h1>Employee Profile</h1>
        ...
    </layout:main>
    
    0 讨论(0)
  • 2021-02-20 00:30

    Define them as <tag-file> in a single .tld file which you put in /WEB-INF folder.

    E.g. /WEB-INF/my-tags.tld

    <?xml version="1.0" encoding="UTF-8" ?>
    <taglib 
        xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
        version="2.1"
    >    
        <display-name>My custom tags</display-name>    
        <tlib-version>1.0</tlib-version>
        <short-name>my</short-name>
        <uri>http://example.com/tags</uri>
    
        <tag-file>
            <name>foo</name>
            <path>/WEB-INF/tags/users/foo.tag</path>
        </tag-file>
    
        <tag-file>
            <name>bar</name>
            <path>/WEB-INF/tags/widgetsA/bar.tag</path>
        </tag-file>
    
        <tag-file>
            <name>baz</name>
            <path>/WEB-INF/tags/widgetsB/baz.tag</path>
        </tag-file>
    </taglib>
    

    Use it in your JSPs as follows

    <%@taglib prefix="my" uri="http://example.com/tags" %>
    ...
    <my:foo />
    <my:bar />
    <my:baz />
    
    0 讨论(0)
  • 2021-02-20 00:31

    Should work. Folder names under the specified tag-dir value become hyphen-separated parts of the tag names you would use.

    0 讨论(0)
提交回复
热议问题