我有一个复合组件,其中包含输入字段 ID 的一些参数,例如:
<cc:attribute
name="addressFieldId"
required="true" />
我想使用这样的组件:
<amn:singleLocationMap
id="singleLocationMap"
addressFieldId="address" .../>
<!-- some code, different ui:define regions -->
<h:inputText
value=""
id="address" />
但是当我在 JavaScript 中访问 ID 时 (var address = '#{cc.attrs.addressFieldId}';
),我只得到 id 参数 address
,明显地。但我想访问 JSF 客户端 ID,例如 formId:address
。
有没有办法在 JavaScript 中获取 JSF 客户端 ID,或者将 JSF 客户端 ID 传递给复合组件的最佳方法是什么?
最佳答案
使用绑定(bind)
将组件绑定(bind)到 View 范围中的UIComponent
变量,以便您可以使用UIComponent#getClientId()
打印其实际的客户端 ID。
<h:inputText binding="#{addressInput}" ... />
...
<h:outputScript>
var addressInput = document.getElementById('#{addressInput.clientId}');
// ...
</h:outputScript>
关于javascript - 如何在 JavaScript 中获取复合组件的子组件的客户端 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15791533/