2014-02-05 40 views
1

我將項目從myfaces 2.1遷移到2.2,現在我的複合組件不會渲染。JSF 2.2中的複合組件不會渲染

頁輸出顯示:

<meg:megamenu menubean="[email protected]" id="topMenuLevel0" /> 

凡我:megamenu應擴大到呈現的HTML。

它都在myfaces 2.1中工作。有沒有人有任何想法?

該結構基本上是一個頁面,它使用一個模板,即ui:包含另一個可重用內容,然後使用該複合組件。

頁:

<ui:composition template="/templates/wetLayout.xhtml" > 

模板:

<ui:include src="#{chosenTheme == 'intranet' ? '/sections/common/intranet/commonHeader.xhtml' : '/sections/common/commonHeader.xhtml'}" >  

子節:

... 
xmlns:meg="http://xmlns.jcp.org/jsf/composite/components/topNav" 
... 
<meg:megamenu id="topMenuLevel0" menuBean="#{wetTopMenuBarBean}" /> 

我也既日食朱諾和開普勒嘗試。

感謝,

+0

但是,您網頁的其餘部分是否正確呈現? – mabi

+0

是的,一切都呈現良好。只有複合組件無法呈現。就好像myfaces實現不讀取和擴展組件。 – Danpoleary

+1

如果org.apache.myfaces.STRICT_JSF_2_ALLOW_SLASH_LIBRARY_NAME的web config參數設置爲true,您已經檢查過了嗎?該規範說默認情況下庫中不允許使用斜槓,在這種情況下,libraryName是components/topNav – lu4242

回答

3

我在我自己的例子中試過這個,你是對的:默認情況下,不可能在子目錄中使用複合組件。正如萊昂納多在對這個問題的評論中指出的那樣,這在JSF規範中是不允許的。

但是,在MyFaces中,可以通過將上下文參數org.apache.myfaces.STRICT_JSF_2_ALLOW_SLASH_LIBRARY_NAME設置爲true來更改此行爲。

使用此參數集,我可以在MyFaces 2.2.0的子目錄中使用複合組件。

1

正確設置你的命名空間,它應該工作:

的xmlns:MEG =「http://java.sun.com/jsf/composite/components/ topNav「

+0

嘗試舊名稱空間和新名稱空間都失敗 – Danpoleary