我正在编写ui:composition xhtml文件,使用ui:include包含在不同的页面中。看起来我无法使用getElementById在此文件中引用javascript中的标记,因为标记ID可能会以父页面中的表单ID为前缀。有解决方法吗?
在我发布问题后找到了这个答案。它有帮助!
Acquire full prefix for a component clientId inside naming containers with JSF 2.0
答案 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" ... / >
。