3

我正在使用 jsplumb 和 Primefaces。我有许多 p:panel 组件作为 ui:repeat 的一部分生成。然后我想使用 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

尝试逃避:with \\(如果这不起作用,请尝试 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 回答