我有一个复合组件,其中包含一些输入字段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(var address = '#{cc.attrs.addressFieldId}';
)中访问ID时,我显然只得到了id参数address
。但我想访问像formId:address
这样的JSF客户端ID。
有没有办法在JavaScript中获取JSF客户端ID,或者将JSF客户端ID传递给复合组件的最佳方法是什么?
答案 0 :(得分:2)
使用binding
将组件绑定到视图范围中的UIComponent
变量,以便您可以使用UIComponent#getClientId()
打印其实际的客户端ID。
<h:inputText binding="#{addressInput}" ... />
...
<h:outputScript>
var addressInput = document.getElementById('#{addressInput.clientId}');
// ...
</h:outputScript>