通过jQuery添加JSF标签/组件

Fra*_*cis 1 jquery jsf primefaces

这是我做的:

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

它没有显示标签,但是如果我这样做,例如,它可以工作:

$("<font color='red'>Red</font>").appendTo(a);
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 5

您似乎完全忽略了JSF和JavaScript的上下文.

JSF基本上是一个HTML代码生成器.要自己查看,请创建一个(简单且有效)的JSF页面,并在您喜欢的webbrowser中打开它.右键单击并选择" 查看源".你看到了什么?是的,它是一个和所有HTML代码!如果JSF已经完成了它的工作,你不应该看到任何JSF标签,原因很简单,因为webbrowser不理解它们.它只能理解HTML.

JavaScript是一种客户端语言,它在webbrowser中运行,而不是在webserver中运行.作为证据,当你在物理上不同的机器上运行webserver和webbrowser并调用JavaScript时onclick="alert('peek-a-boo')",你会在webbrowser中看到它,而不是在webserver中.JavaScript可以看到HTML DOM树(通过document对象可用的任何东西,例如document.getElementById("someId")).JavaScript无法看到负责生成该HTML的原始服务器端源代码,更不用说执行它了.对于jQuery而言,它与基于JavaScript的库的简单原因并无不同.

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

也可以看看: