2
我定義H:郵件組件,如下所示:JSF組件ID中生成的前綴j_idt33是什麼?
<h:messages id="summary" styleClass="summary" globalOnly="true"/>
,但是當我使用Firebug檢查單元,我注意到,ID被翻譯成這樣的:j_idt33:summary
那是什麼前綴,以及它爲什麼產生?
我定義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