I currently have my .tag files declared with:
<%@taglib prefix="t" tagdir="/WEB-INF/tags" %>
Example of the path of a tag file :
/WEB-INF/tags/test.tag
And I use them like so :
<t:test oneAttributeKey="oneAttributeValue">
some content...
</t:test>
My problem : I don't want to put all my tag files in one single folder, "/WEB-INF/tags".
I would prefere to have them in different subdirectories :
/WEB-INF/tags/users/
/WEB-INF/tags/widgetsA/
/WEB-INF/tags/widgetsB/
(...)
Is this possible, without creating a different taglib prefix for each and everyone of them?
Example of what I'd like to avoid :
<%@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" %>
Example of what I would like, using a single "t" prefix :
<t:users/onetag oneAttributeKey="oneAttributeValue">
some content...
</t:users/onetag>
Does a similar solution exist?
UPDATE : BalusC showed it's possible to use one prefix only, by defining all the tag files in a single .tld. I guess my question was not clear enough then : I'd like to know if it's possible to use the tag files in multiple subdirectories, without having to specify a path to each of them anywhere except in the element that use them (ex: "<t:users/onetag")!
What I do not like about JSP Tags is that they act very differently than regular JSP files, even if they actually share very similar content. In fact, I even decided to put all my jsp files inside the /WEB-INF/tags/ folder, so they are side to side with the tag files (I had to choose /WEB-INF/tags/ for that, since this folder is mandatory for the tag files, for some reason)! I don't understand why some of my files containing HTML would go in /WEB-INF/jsp/ and some others in /WEB-INF/tags/!!
I want to be able to group the jsp and tag files into directories, depending of what they are related to! Example :
/WEB-INF/tags/users/userProfileLayout.tag
/WEB-INF/tags/users/employeeProfile.jsp
/WEB-INF/tags/users/employerProfile.jsp
/WEB-INF/tags/widgetsA/widgetALayout.tag
/WEB-INF/tags/widgetsA/oldWidgetA.jsp
/WEB-INF/tags/widgetsA/newWidgetA.jsp
But this forces me to declare the path of each of the subdirectories, in multiple @tablib or in a .tld, which I find a little bit inconvenient. I'll live with it, but I think it could be improved.
The taglib directive declares that your JSP page uses a set of custom tags, identifies the location of the library, and provides means for identifying the custom tags in your JSP page.
A tag file is a source file that contains a fragment of JSP code that is reusable as a custom tag. Tag files allow you to create custom tags using JSP syntax. Just as a JSP page gets translated into a servlet class and then compiled, a tag file gets translated into a tag handler and then compiled.
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 />
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With