我正在構建一個頁面,該頁面將具有多個標記實例,如下所示。在ui中生成唯一的ID標記:include資源
<ui:include id="foo" src="images/something.svg" />
Faces Servlet將svg文件傳遞給瀏覽器,而不會進行除EL表達式之外的任何處理,這很好。問題在於包含文件中的id標籤是靜態的,因此包含該文件的多個標籤將生成非唯一的ID標籤。
我想要做的是一樣的東西是什麼H:形式確實,那裏的UI的ID:包括標籤前置到包含文件中的元素的ID。然後我可以毫不含糊地處理所有事情。
是否有一個公認的「最佳實踐」的方式來做到這一點?
更新:也許我應該擴大這個問題跟進,這是我需要做到這一點嗎?我的目標是在svg文檔的每個包含副本中唯一地標識標籤,其中可以有任何編號。無論如何,我有jQuery可用,因爲它由Primefaces引入。
所以,如果我有一個JSF文件是這樣的:
<ui:include id="foo" src="images/something.svg" />
<ui:include id="bar" src="images/something.svg" />
而且something.svg文件我有一個標籤
<rect id="blink" ... />
在頁面上的JavaScript裏面,我想能夠獲得指向foo:blink或bar:blink。我想我可以使用XPath表達式,但我知道這些很慢。我無法想象那些發明了UI的人:包括標籤沒有想過如何處理這個問題,所以我假設我錯過了一些明顯的東西。
需要明確的是,在'something.svg'因此實際上* *一個一個facelet文件? – BalusC 2011-05-26 18:42:47
不,這只是一個svg文檔,以(標題後)一個svg標籤開頭。在HTML 5中,這對於將動態和交互式文檔插入頁面非常有效,並且JSF在生成它時沒有問題。事情是Faces servlet不處理除UIComponents中的標記以外的任何ID標記,而svg文件中沒有任何標記是JSF定義的標記。 – AlanObject 2011-05-27 14:45:43
但你提到它在處理EL表達式嗎?理論上可以引入JSF組件,甚至可以使它成爲一個已經獲得自動生成的ID的組合組件。 – BalusC 2011-05-27 14:48:37