如何在JavaScript中获取复合组件的子组件的客户端ID

时间:2013-04-03 15:24:37

标签: javascript jsf-2 composite-component

我有一个复合组件,其中包含一些输入字段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传递给复合组件的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

使用binding将组件绑定到视图范围中的UIComponent变量,以便您可以使用UIComponent#getClientId()打印其实际的客户端ID。

<h:inputText binding="#{addressInput}" ... />

...

<h:outputScript>
    var addressInput = document.getElementById('#{addressInput.clientId}');
    // ...
</h:outputScript>