JSF组件ID中生成的前缀j_idt33是什么?
问题描述:
我定义H:邮件组件,如下所示:JSF组件ID中生成的前缀j_idt33是什么?
<h:messages id="summary" styleClass="summary" globalOnly="true"/>
,但是当我使用Firebug检查单元,我注意到,ID被翻译成这样的:j_idt33:summary
那是什么前缀,以及它为什么产生?
答
那的ID的父NamingContainer
部件等<h:form>
,<h:dataTable>
,<ui:repeat>
,<f:subview>
,复合部件等
JSF预先考虑与亲本namingcontainer组件的ID生成的HTML的客户端ID,以避免每当组件在生成的HTML输出中重复使用多次(例如在表格行,包含文件或复合组件中等)时,都会在HTML客户端ID中发生冲突。多个HTML元素具有相同的属性是非法的ID。
您可以通过给NamingContainer
组件一个固定ID来禁止自动生成的ID。在你的具体情况下,这很可能是<h:form>
。所以给它一个固定的ID,例如
<h:form id="form">
...
这样的j_idt33:summary
将成为form:summary
。
并得到一个ID的元素我必须得到它与完整的生成ID,而不是它的ID,对不对? –
在JavaScript中,你的意思是?当然。 JavaScript所能够访问的所有内容都是HTML DOM树,而不是JSF组件树。 JavaScript在webbrowser中运行,而不是在webserver中运行。 JSF运行在web服务器上并生成HTML。 – BalusC