3

私はjsplumbとPrimefacesを使用しています。ui:repeatの一部として生成されたp:panelコンポーネントがいくつかあります。次に、jsplumbを使用してこれらのパネルを接続します。PrimefacesはパネルIDを生成し、スクリプトコードでこれらを使用してjsplumbをセットアップします。

作成したパネルIDを使用すると、すべて正常に機能しますが、自動的に作成されたパネルIDを使用すると、コネクタが表示されません。

<ui:repeat value={#mybean.nodes} var="node"> <p:panel> ... </p:panel> </ui:repeat>

jsPlumb.connect({source:"j_idt20:0", target:"j_idt20:1"});

ここで、j_idt20:0およびj_idt20:1は、Primefacesから生成されたIDであり、ブラウザーでhtmlページを検査することによって検出されます。

生成されたIDに「:」が含まれているという事実まで問題を追跡したと思います。例:'j_idt_29:0'

行のjsplumb内の名前に:が含まれるIDを参照するにはどうすればよいjsPlumb.connect({source:"element1"target:"element2"});ですか?

4

2 に答える 2

1

でエスケープしてみてください:\\それがうまくいかない場合は、singleを試してください\

jjsPlumb.connect({source:"j_idt20\\:0", target:"j_idt20\\:1"});

また

web.xmlの次のコンテキストパラメータによって、JSFのデフォルトのUINamingContainerセパレータを変更します。例えば

<context-param>
    <param-name>javax.faces.SEPARATOR_CHAR</param-name>
    <param-value>-</param-value>
</context-param>

CSSセレクターでJSFで生成されたHTML要素IDを使用するにはどうすればよいですか?

于 2013-01-29T07:35:54.403 に答える
0

:あなたはあなたの文字列のサインをエスケープする必要があります。Primefacesには、このための組み込みのJavaScript関数があります。次のことができます。

var escapedId = PrimeFaces.escapeClientId("id1:id2");

正しくエスケープされます。

この関数を使用したくない場合は、何らかの理由で、次のようにエスケープ:して\\ください。

"id1\\:id2"
于 2013-01-29T07:41:13.920 に答える