【发布时间】:2015-11-20 06:02:50
【问题描述】:
我的 jDeveloper 版本是 11.1.1.9.0
我知道通过clientListener 标签定位元素。但这只会给我一个对它被声明的元素的引用。如果我想根据在 jDeveloper 中声明的 ID 来定位页面上的另一个元素怎么办?例如:
<af:inputText label="Label 1" clientComponent="true" id="it15"> // what's declared in jDeveloper
在 HTML 中呈现为:
<input type="text" class="x25" name="r1:0:it15" id="r1:0:it15::content">
注意it15 是如何转换为r1:0:it15 的。因此,执行以下操作无法获取对该元素的引用:
document.getElementById("it15"); // returns null
AdfPage.PAGE.findComponent("it15"); // returns undefined
这让我想到以下问题:
为什么在渲染 HTML 时 ID 会发生变化?
如果元素的 ID 被随机添加,我将如何定位该元素 字符串?
有没有办法获取随机字符串而不是硬编码 带有控件 ID?
【问题讨论】:
-
我不确定这是否有帮助,但我在 ado.net 上遇到过类似的问题,并且有一种方法可以添加 sn-p 以获取客户端 ID。
-
您的输入文本采用名为 r1 的形式,看起来您正在通过重复或类似的方式基于 0 创建多个 inputTexts。 Jsf 将您的字段 ID 转换为唯一的东西,以便可以找到它。
-
这是有道理的。是的,我在表单中有更多的文本框。但是表单 id 是
f1并且它的第一个孩子的 ID 是r1
标签: javascript html jsf