通过jQuery添加JSF标记/组件
以下是我所做的:通过jQuery添加JSF标记/组件,jquery,jsf,primefaces,Jquery,Jsf,Primefaces,以下是我所做的: var a = $(document.getElementById("panelForm:tableId01")); $("<p:outputLabel value='Testing'/>").appendTo(a); var a=$(document.getElementById(“panelForm:tableId01”); $(“”)。附录(a); 它不显示标签,但如果我这样做,例如,它可以工作: $("<font color='red'>Re
var a = $(document.getElementById("panelForm:tableId01"));
$("<p:outputLabel value='Testing'/>").appendTo(a);
var a=$(document.getElementById(“panelForm:tableId01”);
$(“”)。附录(a);
它不显示标签,但如果我这样做,例如,它可以工作:
$("<font color='red'>Red</font>").appendTo(a);
$(“红色”)。附录(a);
您不能使用“$(“”)”
。因为它是PrimeFaces标记库。当页面呈现时,它将生成html标记(例如:“测试”
)。因此,您应该使用jquery作为html标记。例如:
<p:outputLabel value='Testing' styleClass='my-class'/>"
var a = $(document.getElementById("panelForm:tableId01"));
$("label.my-class").appendTo(a);
”
var a=$(document.getElementById(“panelForm:tableId01”);
$(“label.my class”)。附录(a);
您似乎完全忽略了JSF和JavaScript上下文的要点
JSF基本上是一个HTML代码生成器JSF页面并在您喜爱的webbrowser中打开它。右键单击并选择查看源代码。您看到了什么?是的,这是一个完整的HTML代码!如果JSF工作正常,您不应该看到任何JSF标记,原因很简单,webbrowser不理解它们。它只理解HTML
JavaScript是一种客户端语言,在webbrowser中运行,而不是在webserver中运行。作为证据,当您在物理上不同的机器上运行webserver和webbrowser并调用JavaScriptonclick=“alert('peek-a-boo')”
时,您会在webbrowser中看到它,而不是在webserver中。JavaScript可以看到HTML DOM树(通过document
对象提供的任何内容,例如document.getElementById(“someId”)
)。JavaScript无法看到负责生成HTML的原始服务器端源代码,更不用说执行它了。对于jQuery,它没有什么不同,原因很简单,它是一个基于JavaScript的库
您需要以不同的方式解决您的具体功能需求。如果您想动态添加JSF组件,那么您应该通过JSF本身而不是通过JavaScript来完成。下面是一个答案,说明了许多方法之一:。但是,如果您坚持使用jQuery来实现这一点,那么您应该自己指定JSF组件的HTML输出,但您基本上仍然完全没有理解JSF的要点
另见: