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

标签 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 中访问 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/

相关文章:

jsf-2 - 加载页面时显示 growl primefaces jsf2

jsf - PrimeFaces 对话框延迟加载(动态 ="true")不起作用?

ajax - 触发器 <cc :clientBehavior> event from <p:ajax> nested in composite

jsf - 使用 ui 的复合组件调用方法中缺少参数值 :repeat

javascript - Highcharts 将正数和负数的列总和堆叠在一起

javascript - 如何使菜单不可点击但可悬停?

javascript - 用文档片段javascript替换元素内容

javascript - MVC 3 $.post 有效但 $.ajax 无效

java - 如何在javascript中使用action返回值(oncomplete)?

jsf - 使用复合组件将列添加到 Primefaces PanelGrid