1

これが私がしたことです:

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

ラベルは表示されませんが、たとえば、これを行った場合は機能します。

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

2 に答える 2

5

JSF のポイントと JavaScript のコンテキストを完全に見逃しているようです。

JSF は基本的に HTML コード ジェネレーターです。自分で確認するには、(単純で機能する) JSF ページを作成し、お気に入りの Web ブラウザーで開きます。右クリックして[ソースの表示]を選択します。何が見えますか?はい、それは 1 つの HTML コードです。JSF が適切に機能している場合、JSF タグは表示されません。これは、Web ブラウザが JSF タグを認識できないという非常に単純な理由によるものです。HTML のみを理解します。

JavaScript は、Web サーバーではなく Web ブラウザーで実行されるクライアント側の言語です。証拠として、物理的に異なるマシンで webserver と webbrowser を実行し、 JavaScript を呼び出すとonclick="alert('peek-a-boo')"、webserver ではなく webbrowser で表示されます。JavaScript は HTML DOM ツリー (documentなどのオブジェクトを介して利用できるものdocument.getElementById("someId")) を見ることができます。JavaScript は、その HTML の生成を担当する元のサーバー側のソース コードを表示することはできません。ましてや、実行することはできません。jQuery の場合は、JavaScript ベースのライブラリであるという単純な理由で違いはありません。

具体的な機能要件を別の方法で解決する必要があります。JSF コンポーネントを動的に追加する場合は、JavaScript ではなく、JSF 自体を介して行う必要があります。これは、多くの方法の1つを示す回答です: How to dynamic add JSF components . ただし、これに jQuery を使用することを主張する場合は、JSF コンポーネントの HTML 出力を自分で指定する必要がありますが、基本的にはまだ JSF の要点を完全に見逃しています。その時は下のリンクをよく読んでください。

以下も参照してください。

于 2013-08-29T11:32:39.503 に答える
2

使用できません"$('<p:outputLabel value='Testing'/>')"。PrimeFacesタグlibなので。'<label class="my-class ui-outputlabel ui-widget" id="j_idt19:j_idt22">Testing</label>'ページがレンダリングされると、html タグ (例: ) が生成されます。したがって、html タグには jquery を使用する必要があります。たとえば、次のようにします。

<p:outputLabel value='Testing' styleClass='my-class'/>"

var a = $(document.getElementById("panelForm:tableId01"));
$("label.my-class").appendTo(a);
于 2013-08-29T03:31:07.817 に答える