JSF组件ID中生成的前缀j_idt33是什么?

时间:2011-11-26 14:45:02

标签: jsf jsf-2 icefaces

我定义h:messages组件如下:

<h:messages id="summary"  styleClass="summary" globalOnly="true"/>

但是当我用firebug检查元素时,我注意到id被翻译成类似:j_idt33:summary

该前缀是什么,为什么会生成?

1 个答案:

答案 0 :(得分:6)

这是父<h:form>组件的ID,如<h:dataTable><ui:repeat><f:subview>NamingContainer,复合组件等。

JSF使用父命名容器组件的ID预先生成生成的HTML客户端ID,以便在生成的HTML输出中多次重用组件时(例如在表行中),或者避免HTML客户端ID中的冲突,或者包含文件或复合组件等。拥有多个具有相同ID的HTML元素是非法的。

您可以通过为<h:form>组件提供固定ID来抑制自动生成的ID。在您的特定情况下,它很可能是<h:form id="form"> ... 。所以给它一个固定的ID,例如

j_idt33:summary

这样form:summary将成为{{1}}。