我定义h:messages组件如下:
<h:messages id="summary" styleClass="summary" globalOnly="true"/>
但是当我用firebug检查元素时,我注意到id被翻译成类似:j_idt33:summary
该前缀是什么,为什么会生成?
答案 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}}。