2012-09-17 51 views
3

有沒有辦法覆蓋JSF模板提供的<ui:define>覆蓋<ui:define>

例如文件main.xhtml,包括模板文件,包含:

<ui:define name="title">SomeTitle</ui:define> 
<ui:define name="menu"><ui:include src="path_to_menu_1"/></ui:define> 
<ui:define name="content">content_code_goes_here</ui:define> 

如果我想創建一個main2.xhtml文件是相同的main.xhtml,與它採用了不同的菜單中的例外是有可能做這樣的事情:

<ui:include src="main.xhtml"/> 
<ui:define name="menu"><ui:include src="path_to_menu_2"/></ui:define> 

<ui:define name="menu">覆蓋標籤名稱相同的屬性,main.xhtml

回答

1

只需指定main.xhtml作爲main2.xhtml的模板。

main.xhtml

<ui:composition template="sometemplate.xhtml" ...> 
    <ui:define name="title">SomeTitle</ui:define> 
    <ui:define name="menu"><ui:include src="path_to_menu_1"/></ui:define> 
    <ui:define name="content">content_code_goes_here</ui:define> 
</ui:composition> 

main2.xhtml

<ui:composition template="main.xhtml" ...> 
    <ui:define name="menu"><ui:include src="path_to_menu_2"/></ui:define> 
</ui:composition> 
+0

天才在於簡單:) –

+0

我覺得我慢慢開始瞭解用戶界面之間的區別:裝飾和UI:組成 - 解釋「JSF不顧一切在UI外部:構圖「似乎不夠 - 似乎ui:與ui一起裝飾:定義行爲的方式不同。例如。當您使用ui提及的所有內容時,建議的解決方案將不起作用:裝飾而不是ui:組合。但您可以使用ui:在最後一步即main2.xhtml中進行修飾 – Toskan