子目录中的JSP标记文件,使用单个taglib前缀。那可能吗?

【字号: 日期:2024-01-26浏览:42作者:雯心
如何解决子目录中的JSP标记文件,使用单个taglib前缀。那可能吗??

将它们定义为放在文件夹<tag-file>中的单个.tld文件中/WEB-INF。

例如 /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>

如下在JSP中使用它

<%@taglib prefix='my' uri='http://example.com/tags' %>...<my:foo /><my:bar /><my:baz />解决方法

目前,我的.tag文件声明为:

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

标记文件路径的示例:

/WEB-INF/tags/test.tag

我这样使用它们:

<t:test oneAttributeKey='oneAttributeValue'> some content...</t:test>

我的问题 :我不想将所有标记文件放在 一个 文件夹“ / WEB-INF / tags”中。

我希望将它们放在不同的子目录中:

/ WEB-INF /标签/用户/

/ WEB-INF / tags / widgetsA /

/ WEB-INF / tags / widgetsB /

(…)

是否可以 为每个人都创建一个不同的taglib前缀 呢?

我要避免的示例:

<%@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' %>

我想要的示例,使用单个“ t”前缀:

<t:users/onetag oneAttributeKey='oneAttributeValue'> some content...</t:users/onetag>

是否存在类似的解决方案?

更新:BalusC显示通过在单个.tld中定义所有标记文件,可以仅使用一个前缀。我想我的问题是不够清楚,那么:我想知道是否有可能使用在多个子目录中的标记文件,而无需指定它们中的每一个路径的任何地方 ,除了在使用它们(如元素:“ <t:users / onetag“)!

我对JSP标签不满意的是,即使它们实际上共享非常相似的内容,它们的行为也与常规JSP文件完全不同。实际上,我什至决定将我的所有jsp文件都放在/ WEB-INF / tags /文件夹中,因此它们与标记文件并排放置(为此,我必须选择/ WEB-INF / tags/,因为出于某些原因,文件夹对于标签文件是必需的!我不明白为什么我的某些包含HTML的文件会放在/ WEB-INF / jsp /中,而另一些文件会放在/WEB-INF / tags /中!

我希望能够将jsp和标记文件 分组 到目录中,具体取决于它们与之相关!范例:

/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

但这迫使我在多个@tablib或.tld中声明每个子目录的路径,这给我带来了一些不便。我会接受,但我认为它可以改进。

相关文章: