JSF ui:include和getElementById

时间:2012-08-21 20:53:54

标签: javascript jsf

我正在编写ui:composition xhtml文件,使用ui:include包含在不同的页面中。看起来我无法使用getElementById在此文件中引用javascript中的标记,因为标记ID可能会以父页面中的表单ID为前缀。有解决方法吗?

在我发布问题后找到了这个答案。它有帮助!
Acquire full prefix for a component clientId inside naming containers with JSF 2.0

2 个答案:

答案 0 :(得分:2)

你可以这样做:

var elem = document.querySelector( '[id$="-test"]' );

其中test是不带前缀的ID,-是前缀分隔符。

上述代码将选择“id”属性以"-test"结尾的元素(例如<div id="form1-test">...</div>)。

现场演示: http://jsfiddle.net/8kyb2/

请注意querySelector()与属性结尾选择器配对执行速度低于getElementById()

答案 1 :(得分:1)

如果您碰巧使用Apache's Tomahawk Components并指定forceId="true",则代码ID将保持不变。 E.g:

<t:inputText id="name" forceId="true" value="#{myBean.property}" />

将产生<input type="text" id="name" ... / >