【问题标题】:Adding JSF tags/components via jQuery通过 jQuery 添加 JSF 标签/组件
【发布时间】:2023-03-08 20:27:01
【问题描述】:

这是我所做的:

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

它不显示标签,但如果我这样做了,例如,它可以工作:

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

【问题讨论】:

    标签: jquery jsf primefaces


    【解决方案1】:

    您似乎完全忽略了 JSF 的重点和 JavaScript 的上下文。

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

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

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

    另见:

    【讨论】:

    • 谢谢。我在这里stackoverflow.com/questions/16096595/… 做了那个方法,但似乎不起作用
    • 不客气。这与当前问题中所述的问题不同。
    • 是的,我使用了一个用户(Ömer Faruk Almalı)的方法就是这个问题
    【解决方案2】:

    您不能使用"$('&lt;p:outputLabel value='Testing'/&gt;')"。因为它是 PrimeFaces 标签库。它会在页面呈现时生成 html 标签(例如:'&lt;label class="my-class ui-outputlabel ui-widget" id="j_idt19:j_idt22"&gt;Testing&lt;/label&gt;')。所以你应该使用 jquery 作为 html 标签。例如如下:

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

    【讨论】:

    • 那么我将如何获得这些 html 标签?我使用 attr() 方法为 'class' 设置了一个值,但它不起作用
    • 因为 标签会自动生成为 html
    • 你可以像下面这样:" var a = $(document.getElementById("panelForm: tableId01")); $("label[id*=myLabel]").appendTo(a);
    • 我认为不能使用 Javascript 附加 PrimeFaces 标签。你应该按照其他方式来做。因为 JavaScript 不理解 PrimeFaces 标签。你可以通过 html 标签来实现
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多