谁能解释 JSP 自定义标记库和 JSP 2 标记文件背后的想法吗?

它们只是做同一件事的不同方法吗?

他们如何比较?它们各有什么优点和缺点,哪个更好?

有帮助吗?

解决方案

我<!> LT; 3标签文件,但是如果他们真的这么说那么JSTL的首席开发人员就会抽烟。您不能将所有标记库标记重写为标记文件标记,原因很重要:标记文件无法执行:

返回EVAL_BODY_INCLUDE;

换句话说,标记文件的正文内容只有三个选项:

空:没有内在内容,即。 LT <!>; someTag / GT <!>;

无脚本:没有JSP内部内容,即。 <!> lt; someTag <!> gt; <!> lt; p <!> gt; hello world <!> lt; / p <!> gt; <!> lt; / someTag <!> gt;没问题,但不是<!> lt; someTag <!> gt; <!> lt; p <!> gt; <!> lt;%= helloWorld.toString()%<!> gt; <!> lt; / p GT <!>; LT <!>; / someTag GT <!>;

tagdependent:您可以拥有JSP内部内容,但不会这样处理;相反,你必须解析/渲染它,但你认为合适

但是使用旧样式标记库标记,您可以: <!> LT;主体内容GT <!>; JSP LT <!>; <!> /体含量GT; (在tld文件中)然后<!> quot;返回EVAL_BODY_INCLUDE; <!> quot;来自你的<!>“doStartTag <!>”;如果这样做,所有JSP指令都将被解析,就像它们是页面的正常部分一样,并且您的标记只是用适当的内容包装它们。

就个人而言,我的经验法则是:尽可能使用标记文件,即。每当你不需要JSP指令在标记内部工作时,因为它们比非程序员更容易清理一百万倍,不需要tld(如果你将它们保存在一个单独的命名空间中你的标签库标签)。

但是如果您想在标记内部使用JSP内容,那么您唯一的选择就是标记库标记。希望有一天,JSP人员会发布一种在标记文件标记内部进行JSP指令处理的方法,然后我们真的可以放弃旧的基于类的标记,但在此之前请不要尝试用标记文件做所有标记因为你很快就会被简化为为每一个逻辑片段制作自定义标签(因为这是在不使用JSP指令的情况下进行逻辑的唯一方法)。

其他提示

开发自定义标签时遇到的问题

传统的自定义标签需要 Java 编程 技能

除了最简单的自定义标签之外的所有自定义标签都不容易编写。

与 servlet 不同,JSP 的目的是使用 标记语言来管理布局与嵌入式 动态内容。

不得不编写复杂的 Java 代码 在侧重于标记语言的自定义标记中,将 向后

我们可能要使用 JSP 表达式语言或 在执行新的自定义标记时,其他自定义标记 标签

解决方案 JSP 2.0 标记文件

  • 标记文件是 JSP 2.0 引入的重要新概念之一。
  • 标签文件允许更轻松、更快速地开发自定义标签。
  • 标记文件是使用普通 JSP 语法(包括脚本元素)开发的,并且像任何其他自定义标记一样使用。
  • 每个自定义标签都是一个单独的标签文件。

标签文件有何不同?

使用JSP语法编写。

  • 并非所有 JSP 指令都允许出现在标记文件中。
  • 由新标记文件特定指令、操作和隐式对象支持。

由任一标识 。标签 或者 .tagx 后缀。

旨在为自定义标签开发人员提供轻松开发而不损失功能。

  • JSTL 的一位主要开发人员评论说,如果她有时间,她会使用标记文件重写所有 JSTL。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top