java - 创建 JSP 标签而不创建新的 .tag 文件
问题描述
我想创建一个可在单个.jsp
文件中多次使用的 JSP 标记。我不想创建单独的.tag
文件,而是将此标签放在同一个.jsp
文件中。这可能吗?
解决方案
AFAIK 答案是否定的,因为根据自定义标签文档,为了在 JSP 中创建和使用自定义标签,我们应该拥有有效的标签库描述符文件,以便定义自定义标签和标签处理程序类,以便定义当我们在 JSP 文件中使用自定义标签时应该执行的操作。
引入自定义标签是为了消除 JSP 内部对 scriptlet 标签的需求,将业务逻辑与 JSP 分离,使其真正易于维护并最终可重用。自定义标签是一种很好的方法,可以以一种易于 Web 作者使用和控制的方式从 Web 页面的表示中抽象出业务逻辑的复杂性。
此外,渲染自定义标签还有一个更重要的条件:标签库描述符。标记库描述符是一个 XML 文档,其中包含有关整个库的信息以及有关库中包含的每个标记的信息。TLD 被 Web 容器用于验证标签,也被 JSP 页面开发工具使用。
标签库描述符文件的扩展名必须为.tld,并且必须打包在WAR文件的/WEB-INF/目录或子目录中,或者打包在JAR中的标签库的/META-INF/目录或子目录中。仅当文件为 tld 格式并且打包为 WEB-INF 目录的一部分时,容器才会将文件作为标记描述符 fil。如果一个标签被实现为一个标签文件并且被打包在/WEB-INF/tags/或者一个子目录下,一个TLD会被web容器自动生成。
但是还有另一种小方法可以避免将标记库定义为应用程序的一部分,您可以在 JSP 中定义标记库并使用它,而无需将标记库作为应用程序的一部分。例如,假设有一个名为“www.example.com”的网站,并且他们托管了一个 customlib 作为应用程序的一部分。在这种情况下,您可以直接在 JSP 中使用自定义库。下面是一个可以演示相同的小 Snipper。
<%@ taglib uri = "http://www.example.com/custlib" prefix = "mytag" %>
<html>
<body>
<mytag:hello/>
</body>
</html>
这是一个等效的jsp指令:
<jsp:directive.taglib uri = "http://www.example.com/custlib" prefix = "mytag" />
参考资料和来源:
https://docs.oracle.com/javaee/5/tutorial/doc/bnamu.html
推荐阅读
- javascript - 如何在 html 页面上实时显示循环结果 Java Spring
- android - Flutter应用程序简单登录页面,选择acc“'Future后出现此错误
' 不是类型 '() => void' 的子类型" - x11 - X keysims 列表
- r - 如何在 ggplot 中对正确变量进行统计比较?
- typescript - 如何从父类中的非静态方法中引用子类的静态属性?
- ruby-on-rails - 在 Ruby on Rails 中使用 URI.open 时如何使用代理
- javascript - Javascript将axios const结果评估为字符串
- java - 在创建私人火力基地时,此错误显示无法解析符号火力基地
- apache - 如何使 netdata apache 插件在 Plesk 环境中工作
- excel - 如何在带有工作表名称、VBA 的循环中使用工作表代码名称?