2010-05-31 97 views
2

我正在創建一個facelet組件,我打算在單個頁面中包含多次。Facelets重複ID

我需要在我的組件中定義一個a4j:outputPanel標籤並給它一個id,這樣纔有可能通過ajax reRender這個outputPanel。但facelets似乎沒有處理這種情況,因爲「duplicateId Exception」被拋出。我有點不明白爲什麼會這樣。我在單個頁面中包含了幾個組件,但每個組件都包含具有相同硬編碼ID的outputPanel。

  1. 身份證不能硬編碼?
  2. 是否有任何facelets標籤可以創建邊界,在該邊界中,您不必關心該邊界內的對象的id與邊界外的對象的id之間的衝突?

回答

0

這是通過使ID到組件諸如以避免硬編碼ID的方式:

AC:testComponent ID = 「someId」

在的facelet組件隨後:

h:outputText id =「#{id} _outputText」

問題是特立尼達不支持partialTriggers屬性的EL語言。如果有人知道如何做到這一點,請發佈到本網站的解釋。

+2

一個問題我看你的例如,你在你的id中間有一個下劃線,這將導致IllegalArgumentException – Adam 2011-05-12 00:28:30

+0

沒關係,這不應該是一個問題,但看看我的問題在這個問題上的詳細信息:http://stackoverflow.com /問題/ 5972433 /什麼,是最規則-FOR-A-JSF-ID/5972462#5972462 – Adam 2011-05-12 15:17:19

1

實際上創建子視圖會導致partialTriggers的問題。 < UI:組件> < F:子視圖ID = 「#(編號)」 > ....組件代碼 </F:子視圖> </UI:組件>