2008-10-23 73 views

回答

8

我< 3个标签文件,但如果他们真的这么说,那么JSTL的首席开发人员就会抽烟。您不能将所有标签库标签重新编写为标签文件标签,其中一个非常重要的原因是:标签文件无法做到:

return EVAL_BODY_INCLUDE;

换句话说,标记文件只对自己的身体,内容三个选项:

空:没有内在的内容,即。 < someTag/>

scriptless:没有JSP内容,即。 <someTag> <p>世界你好</P > </someTag >是确定的,但不<someTag> <p> <%= helloWorld.toString()%> </P > </someTag >

依赖于标签:您可以拥有JSP内部内容,但不会像这样处理;相反,你必须解析/渲染它,但是你认为合适的

但与旧式标签库的标签,你可以有: <体内容> JSP < /体含量> (在TLD文件)和然后“返回EVAL_BODY_INCLUDE;”来自你的“doStartTag”。如果你这样做,所有的JSP指令都会被解析,就像它们是页面的正常部分一样,而你的标签只是用适当的内容包装它们。我个人的经验法则是:尽可能使用标签文件,即。每当你不需要JSP指令在标签内部工作时,因为它们是非常干净的一百万倍,对于非程序员来说更容易处理,不需要tld(好吧,如果你把它们放在一个单独的命名空间中您的标签库标签)。

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

6

问题开发自定义标签

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

除最简单的自定义标签外,其他所有标签都不易写入。

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

必须在自定义标记中编写复杂的Java代码 ,这些自定义标记专注于标记语言,因此会向后退出 。

我们可能想要在实现新的自定义 标记时使用JSP表达式语言或 其他自定义标记。

解决方案 JSP 2.0标记文件

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

标签文件有何不同?

使用JSP语法编写。

  • 并非所有JSP指令都允许在标记文件中。
  • 支持新的标签文件特定的指令,动作和隐式对象。

由任一.TAG.tagx后缀标识。

旨在提供自定义标签开发人员易于开发而不丧失功能。

  • JSTL的一位主要开发人员评论说她有时间,她会用标记文件重写所有的JSTL。