通过 jQuery 添加 JSF 标签/组件

2023-12-03

这是我所做的:

var a = $(document.getElementById("panelForm:tableId01"));
$("<p:outputLabel value='Testing'/>").appendTo(a);

它不显示标签,但如果我这样做,例如,它会起作用:

$("<font color='red'>Red</font>").appendTo(a);

您似乎完全错过了 JSF 和 JavaScript 上下文的要点。

JSF 基本上是一个 HTML 代码生成器。要亲自查看它,请创建一个(简单且有效的)JSF 页面并在您最喜欢的 Web 浏览器中打开它。右键单击并选择查看源代码。你看到了什么?是的,这是一个完整的 HTML 代码!如果 JSF 正确完成了它的工作,您不应该看到任何 JSF 标签,原因很简单,Web 浏览器无法理解它们。它只理解 HTML。

JavaScript 是一种客户端语言,在网络浏览器中运行,而不是在网络服务器中运行。作为证据,当您在物理上不同的计算机上运行网络服务器和网络浏览器并且调用 JavaScript 时onclick="alert('peek-a-boo')",然后您会在网络浏览器中看到它,而不是在网络服务器中。 JavaScript 可以看到 HTML DOM 树(任何可以通过document对象,例如document.getElementById("someId"))。 JavaScript 无法看到负责生成 HTML 的原始服务器端源代码,更不用说执行它了。对于 jQuery 来说,它没有什么不同,原因很简单,它是一个基于 JavaScript 的库。

您需要以不同的方式解决您的具体功能需求。如果您想动态添加 JSF 组件,那么您应该通过 JSF 本身而不是通过 JavaScript 来完成。这是显示多种方法之一的答案:如何动态添加JSF组件。然而,如果您坚持为此使用 jQuery,那么您应该自己指定 JSF 组件的 HTML 输出,但您基本上仍然完全错过了 JSF 的要点。然后仔细阅读下面的链接。

也可以看看:

  • 当 UI 可以通过 CSS、HTML、JavaScript、jQuery 实现时,JSF 还需要什么?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 jQuery 添加 JSF 标签/组件 的相关文章