arya-blue
luna-amber
luna-blue
luna-green
luna-pink
nova-dark
nova-light
saga-blue
vela-blue
Layout
To place any custom content between layout panes there are three alternative ways:

  • Place a nested layout pane (pe:layoutPane) within a div element with the class "ui-layout-content". This approach is applied in this example.
  • Add the option "containerSelector" to child options (see LayoutOptions class). The value of "containerSelector" points to a wrapper-div element which acts as a container for nested layout panes.
  • Use the header facet (f:facet name="header") for any custom content. This is very handy. For instance, if you place messages there, they will be always visible because only pane's inner "content container" gets scrollbars. The header facet always stays fixed. This approach is demonstrated in this example.
Note: Use the widget's method sizeContent(pane) to manually trigger a resize from your own code when the custom content between layout panes gets updated and changes its size. sizeContent(pane) resizes the "content container" inside the specified pane (e.g. sizeContent('center_west')). Content is resized automatically when the pane is resized or opened, so this method only needs to be called manually if something "changes the height" of a header or footer element in the pane.

Please refer examples on the plugin homepage to see how it works in detail.
Source

<h:form id="mainForm" prependId="false">    
    <pe:layout id="fullPage" options="#{customContentLayoutController.layoutOptions}"
               widgetVar="fpLayoutWidget">
        <pe:layoutPane position="north">
            North
        </pe:layoutPane>
        <pe:layoutPane position="center">
            
            <div style="padding:10px; margin-bottom:6px; border:1px solid red;"
                 class="ui-widget-content ui-corner-all">
                 This is a custom content between layout panes.
                 <br/><br/>
                 Any elements can be placed here.
            </div>
            
            <div class="ui-layout-content">
                <!-- ui:include -->
                <ui:include src="#{customContentLayoutController.src}"/>
            </div>
        </pe:layoutPane>
        <pe:layoutPane position="west" styleHeader="background:none; border:none; padding:0;">
            <f:facet name="header">
                <p:outputPanel id="msgPanel">
                    <p:autoUpdate />
                    <p:messages id="messages" showSummary="true" showDetail="false"/>
                    
                    <script type="text/javascript">
                    /* <![CDATA[ */
                        if (#{facesContext.partialViewContext.ajaxRequest}) {
                            $(function() {
                                PF('fpLayoutWidget').sizeContent('west');
                            });
                        }
                    /* ]]> */
                    </script>    
                </p:outputPanel>
            </f:facet>
            
            Click on the buttons to see that scrollbars in the west pane are well adjusted and messages preserve their place when scrolling.
            
            <h:panelGrid columns="2" style="margin:15px">
                <p:commandButton value="Show messages" process="@this" style="margin-right:5px;"
                                 action="#{customContentLayoutController.showMessages}"/>
                <p:commandButton value="Hide messages" process="@this"
                                 action="#{customContentLayoutController.hideMessages}"/>
            </h:panelGrid>
            
            <p:dataTable id="dataTable" var="message" value="#{dataTableController.messages}" paginator="true"
                         rows="30" rowsPerPageTemplate="20,30,40">
                <p:column sortBy="#{message.subject}" headerText="Subject">
                    <h:outputText value="#{message.subject}"/>
                </p:column>
                <p:column sortBy="#{message.text}" headerText="Text">
                    <h:outputText value="#{message.text}"/>
                </p:column>
                <p:column sortBy="#{message.subject}" headerText="Subject">
                    <h:outputText value="#{message.subject}"/>
                </p:column>
                <p:column sortBy="#{message.text}" headerText="Text">
                    <h:outputText value="#{message.text}"/>
                </p:column>
                <p:column sortBy="#{message.subject}" headerText="Subject">
                    <h:outputText value="#{message.subject}"/>
                </p:column>
                <p:column sortBy="#{message.text}" headerText="Text">
                    <h:outputText value="#{message.text}"/>
                </p:column>
            </p:dataTable>            
        </pe:layoutPane>
        <pe:layoutPane position="south">
            South
        </pe:layoutPane>
    </pe:layout>
</h:form>

<h:outputStylesheet library="css" name="global.css"/>

<h:outputStylesheet id="layoutCSS">
    body {
        margin: 4px !important;
    }
    
    body > form > .ui-layout-north {
        background: none;
        border: none;
        color: #000000;
        padding: 4px;
        overflow: hidden;
    }
    
    body > form > .ui-layout-south {
        background: none;
        border: none;
        color: #000000;
        overflow: hidden;
        vertical-align: middle;
    }
    
    .ui-datatable thead th,
    .ui-datatable tbody td,
    .ui-datatable tfoot td {
        white-space: nowrap;
    }
    
    .ui-messages-info,
    .ui-messages-warn,
    .ui-messages-error,
    .ui-messages-fatal {
        margin: 0;
    }
    
    #messages > div {
        border-bottom-left-radius: 0;
        border-bottom-right-radius: 0;
        -moz-border-radius-bottomleft: 0;
        -moz-border-radius-bottomright: 0;
    }
</h:outputStylesheet>
                
// Included page with nested child layout
                
<pe:layoutPane position="north">
    Center-North
</pe:layoutPane>
<pe:layoutPane position="center">
    Center-Center
</pe:layoutPane>
            
Components and more
Documentation
Attributes (move mouse over the names to see data types)
Name Description
No attributes available for this component.
PrimeFaces Extensions Showcase - © 2011-2025,PrimeFaces: 15.0.13,PrimeFaces Extensions: 15.0.14-SNAPSHOT,JSF: Apache MyFaces JSF-2.3 Core Impl 2.3.10,Server: Apache Tomcat (TomEE)/9.0.82 (8.0.16),Build time: 2026-02-23 00:32