primefaces改变了菜单栏的中心布局

时间:2014-10-15 18:25:02

标签: jsf primefaces

您好我有一个标题,菜单和内容的模板,我构建了动态菜单菜单栏,现在我想知道如何在菜单上点击每个选项只更新我的布局和标题和菜单将保持原样...这是我的模板:

<div id="header" style="height: 70px;">
     <ui:insert name="header" >
         <ui:include src="header.xhtml" />
     </ui:insert>
</div>

<div id="menu" style="height: 50px;">
     <ui:insert name="menu" >
         <ui:include src="menu.xhtml" />
     </ui:insert>
</div>

<div id="content">
     <ui:insert name="content" >
         <ui:include src="content.xhtml" />
     </ui:insert>
</div>
有人可以帮忙吗?谢谢!

2 个答案:

答案 0 :(得分:2)

我建议你使用JSF模板。通过应用此方法,您的页面易于扩展和重用。

这是我使用p:layoutui:composition

的示例

layout.xhtml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>Layout-menu</title>
    </h:head>
    <h:body>
        <p:layout>
            <p:layoutUnit position="west" 
                          resizable="true" 
                          size="250" 
                          minSize="40" 
                          maxSize="400">
                <h:form>
                    <p:menu>
                        <p:submenu label="Navigations">
                            <p:menuitem value="input" 
                                        outcome="inputText" 
                                        icon="ui-icon-star"/>
                            <p:menuitem value="dropdown" 
                                        outcome="selectOneMenu" 
                                        icon="ui-icon-star"/>
                        </p:submenu>
                    </p:menu>
                </h:form>
            </p:layoutUnit>

            <p:layoutUnit position="center">
                <ui:insert name="source" />
            </p:layoutUnit>
        </p:layout>
    </h:body>
</html>

inputText.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:p="http://primefaces.org/ui"
                template="layout.xhtml">
    <ui:define name="source">
        <h:form>
            inputText
        </h:form>
    </ui:define>

</ui:composition>

selectOneMenu.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:p="http://primefaces.org/ui"
                template="layout.xhtml">
    <ui:define name="source">
        <h:form>
            selectOneMenu
        </h:form>
    </ui:define>

</ui:composition>

您可以在layout.xhtml页面上运行test,如http://host:port/project/layout.xhtml

您可以从其他网站(例如JSF 2 Templating With Facelets ExampleUsing Facelets Templates等)查看有关模板化的详细信息。

答案 1 :(得分:1)

您应该使用在@wittakarn示例组合中显示的JSF Templating与DefaultMenuItem和setUrl显示到其他页面,而另一个页面使用相同的模板,标题和菜单将保留。