2010-03-03 33 views

回答

10

這是一個相當大的混亂。 org.w3c.dom.html.HTMLDivElement不是JSF組件。這表示一個W3 DOM元素,它具有完全不同的目的(JAXP,DOM解析)。

您需要一個javax.faces.component.UIComponent的子類(只需點擊上述Javadoc中的「直接已知子類」即可找到它們)。要呈現HTML <div>元素,只需使用HtmlPanelGroup,其layout屬性設置爲block

HtmlPanelGroup div = new HtmlPanelGroup(); 
div.setLayout("block"); 
someParentComponent.getChildren().add(div); 

它確實有效地等同於 「靜態」 JSF如下:

<h:panelGroup layout="block" /> 
+0

謝謝BalusC!但現在我有另一個問題。當我在mozilla中查看源代碼時,我給動態生成的面板組的id看起來不一樣,即如果我將id設爲「abc」+ autoincrementNo,那麼當我在mozilla中查看源代碼時,我會得到類似j_idt9:abc_1的內容。我如何擺脫這個j_idt9:它會自動獲得前綴。事實上,對我來說控制生成的ID很重要,否則我不會問這樣一個愚蠢的問題:p – TCM 2010-03-03 12:27:33

+0

你需要給每個父UINamingContainer組件('f:subview','h:form','' h:dataTable'等)以及固定ID。順便說一句:如果你實際上需要固定ID的JavaScript原因,那麼還有其他(更好的)方法來解決這個問題,在每個只傳遞元素本身作爲'this'的JS函數。例如。 'onclick =「doSomething(this)」'''doSomething(element){var id = element.id; }' – BalusC 2010-03-03 12:28:43

+0

順便說一下,我在你的個人資料中看到你從未投入任何投票權,也沒有投降。 0分的答案看起來很奇怪。您可以按向上箭頭並按下向下箭頭向下滾動。當你喜歡任何答案,upvote它。當答案沒有任何價值時,就把它留下。當你不喜歡任何答案時,請減少它。 – BalusC 2010-03-03 12:32:02