8

我有几个常见的元素(组件),它们会生成一些 html。看来我的选择是创建一个标记库,或者只是将该逻辑放入一个 jsp 页面并包含 jsp。

有什么不同?正面与负面?

4

4 回答 4

6

Taglibs 允许您定义可以记录的(键入的)参数。标记库也可以知道它们在对象树中的位置,因此在不同的上下文中表现不同;或一遍又一遍地调用特定模板来创建迭代器或语句构造。

您是否知道标记库不一定必须用 Java 编写?还有一个名为 tagfiles 的概念,它允许您在 JSP 中编写您的 taglib;通常更适合扁平组件...非常接近包含。

于 2008-09-29T17:40:25.100 回答
4

当您使用 taglib 时,容器通常:

  • 从 _jspService 中编写和调用辅助方法
  • 在辅助方法中创建了一个标记类的实例并调用了标准方法(setParent()、doStartTag()、doEndTag() 等...)

这将所有代码保留在同一资源中(请求不会传递给另一个组件),因此允许您构建循环行为并访问当前页面上的其他组件。

学习标签库有开销。但是,一旦您的第一个标签开始工作,它就会走下坡路。此外,非开发人员更容易理解最终结果(假设您为标签选择了好的名称)。

于 2008-09-29T17:48:29.420 回答
1

标记(包括易于使用的类似 JSP 的标记文件机制)支持使用强类型命名参数的调用。

JSP 标记的另一个非常有用且经常被忽视的特性是JspFragment属性类型。这允许您将一块 JSP 代码作为参数传递到要调用的标记中,可能会重复调用。

包括缺少这些强大的参数化功能。

于 2008-09-29T17:56:04.893 回答
-2

taglibs 使定义和处理参数变得更容易,但开发它们的开销很大。包含更简单,但功能较弱。很大程度上取决于你的风格。

根据我的经验,人们通常只使用包含,因为他们不想花时间学习创建标签库。导致一团糟。只要您的团队很小并且您的内容不太复杂,那还不错。但这是一种代码气味。

于 2008-09-29T17:36:53.377 回答