在 jsp 中声明一个 taglib 时,我可以让它输出 html 代码吗

When declaring a taglib in jsp can I get it to output html code

假设我有 jsp:

<%@taglib prefix="foo" uri="/WEB-INF/foo.tld"%>
<html>
....
</html>

是否可以让 taglib 声明输出一些 html 代码,这样我的结果 html 将是:

<bar>
SomeOutput
</bar>
<html>
...
</html>

我将解释为什么这对我有用。我经常用 javascript 包装我的领域特定模型,例如当我创建图表时。这样做给了我一个可重复使用的标签来从模型创建图表。为了提供更多上下文,模型可能是员工列表,图表可能会在直方图或其他图表中显示他们的年龄。

但我创建的这些自定义标签库通常依赖于存在的 JavaScript 库。如果可能的话,我希望这个声明发生在声明 taglib 的地方,因为我认为这将提供最干净的解决方案,而不是保守地​​始终包含库,或者需要记住包含 JavaScript 库,所以我的标签会起作用。

也会考虑另一种方法,我很好奇其他开发人员在这种情况下会怎么做。

据我所知这是不可能的。我会创建一个 "init" 标签(例如 <foo:init />,它将执行所需的输出,并将控制变量(例如 fooInitialized = true)放入 page/request 上下文中。然后是您的标签可以检查,是否设置了变量(这意味着 JS 初始化的输出已经完成),如果没有则抛出错误。

类似的方法使用例如Liferay,您必须使用 <portlet:defineObjects /> 标记初始化您的 portlet 对象。