有没有办法覆盖JSF模板提供的<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
答案 0 :(得分:3)
只需指定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>