これが私がしたことです:
var a = $(document.getElementById("panelForm:tableId01"));
$("<p:outputLabel value='Testing'/>").appendTo(a);
ラベルは表示されませんが、たとえば、これを行った場合は機能します。
$("<font color='red'>Red</font>").appendTo(a);
これが私がしたことです:
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 ブラウザーで開きます。右クリックして[ソースの表示]を選択します。何が見えますか?はい、それは 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 の要点を完全に見逃しています。その時は下のリンクをよく読んでください。
使用できません"$('<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);