我遇到了这个问题:我有大约5页(可能更多......)和登录页面,您可以随时从任何页面导航到您想要的任何页面(登录除外)。所以我做了一个模板。我有一个
<p:layoutUnit position="north">
在北方,另一个在南方,另一个在西方在所有页面中(登录除外)。西部layoutunit有一个菜单,其中page1,page2 ... pageN,南北方也一样。所以我做的是使用
<ui:include src="norte.xhtml" />
在北部布局中,与南部和西部布局相同。 但问题是我可以从任何页面导航到任何页面,那么我该如何管理这种导航情况呢?我是否必须为所有可能的导航情况创建导航规则?
请帮帮我。我想让这个充满活力。我正在使用JavaEE 7,JSF 2.2与PrimeFaces 4.0和Netbeans。 我想以最正确的方式做到这一点。
我是否必须使用转发或重定向,我该怎么做?
这是菜单代码:
<h:body>
<ui:composition>
<p:menu>
<p:menuitem value="Inicio" action="page1" />
<p:menuitem value="Altas / Entradas" action="page2" />
<p:menuitem value="Modificar Refacciones" action="page3" />
<p:menuitem value="Consultar" action="page4" />
</p:menu>
</ui:composition>
</h:body>
答案 0 :(得分:0)
您需要使用:
<ui:insert name="content"/>
模板中的..比你想要使用模板的每个页面都要包装
<ui:composition template="/yourpath/yourtemplatePage"/>
<ui:define name="content">
bla bla
<ui:define/>
<ui:composition/>
这是jsf templatingL的基本解释 http://www.mkyong.com/jsf2/jsf-2-templating-with-facelets-example/
还有一个: http://courses.coreservlets.com/Course-Materials/pdf/jsf/jsf2/JSF2-Facelets-Templating.pdf
希望有所帮助:)。
编辑:
我会在这里多说一点: 假设您有以下页面:index.jsf,page1.jsf,page2.jsf。
您需要使用菜单创建模板,例如: template.jsf:
<h:body>
<p:menu>
<p:menuitem value="Inicio" action="/appname/index?faces-redirect=true" />
<p:menuitem value="Altas / Entradas" action="/appname/page1" />
<p:menuitem value="Modificar Refacciones" action="/appname/page2" />
</p:menu>
<ui:insert name="pageContent"/>
</h:body>
正如你所看到的,我添加了?faces-redirect = true,这将取代带有重定向的转发..你可以在想要重定向而不是转发时执行此操作。 现在例如index.jsf:
<ui:composition template="/appname/template.xhtml"/>
<ui:define name="contentPage">
i am index page
<ui:define/>
<ui:composition/>
同样的内容将在page1,page2上,只会更改其内容。
现在所有页面都包含相同的菜单..菜单将仅在模板中定义。当您可以在应用程序中找到该页面的路径时,它将起作用