2014-10-01 31 views
0

我注意到在JSF組件中有(可能是一個新的)屬性「父」。我相信這是爲了指定組件的父項,以便不管組件在xhtml文件中的保留位置。它的父母可能會被設置。如何在jsf組件中使用父屬性?

但我沒有成功使用它。如果知道所需JSF組件的id或clientid,如何使用它指定組件的父級?

javax.el.E​​LException:不能強迫類java.lang.String的「addCustomTags_Bx」到

當我試圖指定父組件ID爲「父」屬性值我獲得以下錯誤類javax.faces.component.UIComponent (不兼容的類型)

+0

你可以添加一些代碼嗎? – Seitaridis 2014-10-01 08:45:22

回答

2

我相信這是爲了指定組件的父,使得無論其中補償onent保存在xhtml文件中

不是。 #{component.parent}返回組件的父組件,如UIComponent#getParent()所示,並且自1.0開始已經在JSF中使用。如javadoc所述,該屬性的類型爲UIComponent,而不是String。這完全解釋了您在嘗試將其設置爲String時遇到的EL異常。

還有一個UIComponent#setParent()方法,但是你不應該使用它。又見javadoc(重點是礦):

public abstract void setParent(UIComponent parent)

...

這個方法必須永遠不會被開發商叫;一個UIComponent的內部實現將調用它作爲組件添加到父母的子女List或方面Map或從中刪除。

因此,無論你想到什麼樣的功能要求,它必須以不同的方式解決。今後,最好問一個關於X instead of Y的問題。很可能您需要<f:facet>(在自定義組件或複合組件的情況下)或<ui:define>(在標記文件或模板文件的情況下)。

+0

@dforce:沒有什麼不同。 – BalusC 2017-03-21 18:49:20

相關問題